关于C/C++的二维数组作为函数参数问题
2018-02-12 21:45
525 查看
在写AncientMessages这道搜索题的过程中,因为代码有点啰嗦,所以就写了一个函数,刚好涉及到如何传递二维数组作为函数的参数。
传统的写法int arr[3][3]; void show(int arr[][3],int n) { for(int i=0;i<n;i++) for(int j=0;j<3;j++) printf("%d%s",arr[i][j],j==2?"\n":" "); } show(arr);
开始以为这样是按值传递,所以换了个写法,调试了半天发现连输入都不对
- 错误的写法
int arr[3][3]={{1,1,1},{1,1,1},{1,1,1}}; void show(int *arr,int n,int m) { for(int i=0;i<n;i++) for(int j=0;j<m;j++) printf("%d%s",arr[i*m+j],j==2?"\n":" "); } show(arr,2,2); arr[1][1]=2; show(arr,2,2); /*结果是 *1 1 *1 1 *1 1 *1 1 */ 预期是 /*结果是 *1 1 *1 1 *1 1 *1 2 */
这是因为a[i*m+j]这里错了,因为数组在定义的时候已经事先分配好一段连续的地址了,所以那里的m应该等于3,应该是定义时的第二个维度。。而不是使用的那个变量m
经测试,第一种写法也是浅拷贝,所以一般就按照传统的来写就行了,如果头比较铁,也可以用其他的方法。
相关文章推荐
- C++中关于二维数组作为函数参数传递的问题
- C++中关于二维数组作为函数参数传递的问题
- C++中关于将fstream对象作为函数参数传递相关问题说明
- 关于C++当中的函数作为另一个函数的参数之小问题
- 关于二维数组作为参数传递给函数的问题
- [C++]关于指针作为函数参数传递
- c++关于类型强转后作为引用参数的一些问题
- C/C++面试题--数组作为函数参数的几个问题
- c++之指针作为函数参数传递的问题
- c++中类对象直接作为函数参数所引起的问题。
- C++指针作为函数的参数进行传递时需要注意的一些问题
- c++之指针作为函数参数传递的问题
- c++中关于数组作为函数参数并传递数组元素个数的几种有效方法的讨论
- 关于 Numpy 数组作为函数参数的一个小问题
- c++之指针作为函数参数传递的问题
- C/C++二维数组作为函数参数传递
- 关于指针作为函数参数传递的理解,对比普通变量作为函数参数的需注意点,其实就是行参和实参的问题。
- C++指针作为函数的参数进行传递时注意的问题
- C++关于参数为const引用类型的函数调用参数成员函数的一个问题
- C++动态二维数组作为函数参数