介绍
C++数组传参这个问题困扰我很久了,进过不停的搜索和学习
归纳了合适的方法
Windows IDE:Visual Studio 2022
支持库
- <iostream>
方式一
介绍
此方法适用于一维数组的传参(因为一维数组传参可以不需要知道大小)
多维数组也可以用,但是必须知道一维之后维度的大小
代码
一维数组传参
void PrintArray(int array[], int size) { std::cout << "Array" << "{"; for (size_t i = 0; i < size; i++) { if (i != 0) { std::cout << ","; } std::cout << array[i]; } std::cout << "}" << std::endl; } int main() { int a[5] = { 1,2,3,4,5 }; int aSize = sizeof(a) / sizeof(a[0]); PrintArray(a, aSize); return 0; }
二维数组传参,多维数组以此类推
void PrintArray(int array[][2], int size) { for (size_t i1 = 0; i1 < size; i1++) { std::cout << "Array" << i1 << "{"; for (size_t i2 = 0; i2 < 2; i2++) { if (i2 != 0) { std::cout << ","; } std::cout << array[i1][i2]; } std::cout << "}" << std::endl; } } int main() { int a[5][2] = { {1, 2}, {4, 5}, {7, 8}, {10, 11}, {13, 14} }; int aSize = sizeof(a) / sizeof(a[0]); PrintArray(a, aSize); return 0; }
方式二
介绍
是以指针的方式传递数组,和第一种方式基本相同。
代码
一维数组传参
void PrintArray(int (*array), int size) { std::cout << "Array" << "{"; for (size_t i = 0; i < size; i++) { if (i != 0) { std::cout << ","; } std::cout << array[i]; } std::cout << "}" << std::endl; } int main() { int a[5] = { 1,2,3,4,5 }; int aSize = sizeof(a) / sizeof(a[0]); PrintArray(a, aSize); return 0; }
二维数组传参,多维数组以此类推
void PrintArray(int (*array)[2], int size) { for (size_t i1 = 0; i1 < size; i1++) { std::cout << "Array" << i1 << "{"; for (size_t i2 = 0; i2 < 2; i2++) { if (i2 != 0) { std::cout << ","; } std::cout << array[i1][i2]; } std::cout << "}" << std::endl; } } int main() { int a[5][2] = { {1, 2}, {4, 5}, {7, 8}, {10, 11}, {13, 14} }; int aSize = sizeof(a) / sizeof(a[0]); PrintArray(a, aSize); return 0; }
方式三
介绍
此方法是使用模板来支持多维数组的传参的,支持任意维度数组
作者推荐
代码
要传几维数组就创建几个模板
template <size_t one, size_t two> void PrintArray(int(&array)[one][two]) { for (size_t io = 0; io < one; io++) { std::cout << "Array" << io << "{"; for (size_t it = 0; it < two; it++) { if (it != 0) { std::cout << ","; } std::cout << array[io][it]; } std::cout << "}" << std::endl; } } int main() { int a[4][3] = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9}, {10, 11, 12} }; PrintArray(a); return 0; }
结尾
以上就是作者对数组传参的学习成果,希望对大家有帮助。