C++如何向函数传递数组?(代码示例)

9次阅读

C++ 中数组不能直接按值传递,需用指针 + 显式长度、std::array、std::vector 或模板推导等方式;指针 + 长度最通用,兼容 C 风格,需传首地址和元素个数。

C++ 如何向函数传递数组?(代码示例)

在 C ++ 中,数组不能直接按值传递给函数(会退化为指针),但有多种安全、清晰的方式实现“传数组”的效果。关键在于明确数组大小和生命周期,避免裸指针陷阱。

用指针 + 显式长度(最通用,兼容 C 风格)

这是最基础也最灵活的方式,适用于动态分配或已知大小的数组。函数接收指向首元素的指针和元素个数。

void printArray(int* arr, size_t len) {for (size_t i = 0; i < len; ++i) {std::cout << arr[i] <<"";}     std::cout <<"n";} 

int main() { int data[] = {1, 2, 3, 4, 5}; printArray(data, std::size(data)); // C++17 起可用 std::size;否则写 sizeof(data)/sizeof(data[0]) }

用引用传递定长数组(类型安全,推荐用于编译期确定大小)

通过模板或显式长度声明数组引用,编译器能检查大小,不会退化,且不拷贝数据。

template void processArray(int (&arr)[N]) {std::cout << "Size:" << N << "n";     for (int x : arr) std::cout <// 或非模板写法(仅适用于固定大小,如 5)void handleFiveInts(int (&arr)[5]) {// 只接受恰好 5 个 int 的数组}

用 std::array(现代 C ++ 首选,值语义 + 大小内建)

std::array 是栈上容器,保留大小信息,可按值或引用传递,支持范围 for、size() 等,无额外开销。

立即学习 C++ 免费学习笔记(深入)”;

#include  void foo(const std::array& arr) {// 推荐 const 引用避免拷贝     std::cout << "Size:" << arr.size() <<"n";     for (int x : arr) std::cout <int main() { std::array a = {10, 20, 30, 40, 50}; foo(a); }

用 std::vector(适合运行时大小不确定或需扩容)

当数组大小在运行时决定,或需要增删元素时,std::vector 是自然选择。传 const 引用避免不必要的拷贝。

#include  void sumVector(const std::vector& vec) {int s = 0;     for (int x : vec) s += x;     std::cout <<"Sum:" << s << "n";} 

int main() { std::vector v = {1, 2, 3, 4, 5}; sumVector(v); }

不推荐裸指针不带长度、也不建议按值传递原始数组(语法错误)。优先选 std::array 或 std::vector,兼顾安全与表达力。

星耀云
版权声明:本站原创文章,由 星耀云 2025-12-27发表,共计291字。
转载说明:转载本网站任何内容,请按照转载方式正确书写本站原文地址。本站提供的一切软件、教程和内容信息仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。
text=ZqhQzanResources