在C程序中的函数中传递一个2D数组

在C程序中的函数中传递一个2D数组,第1张

概述下面的程序(将数组传递函数的玩具程序)不编译. 请解释一下,为什么编译器无法编译(由于技术原因还是因为标准原因)? 我还会看一些解释指针/多维数组的书(因为我对这些数组是不稳定的),但是这里的任何现成的指针都应该是有用的. void print2(int ** array,int n, int m);main(){ int array[][4]={{1,2,3,4},{5,6,7, 下面的程序(将数组传递给函数的玩具程序)不编译.
请解释一下,为什么编译器无法编译(由于技术原因还是因为标准原因)?

我还会看一些解释指针/多维数组的书(因为我对这些数组是不稳定的),但是这里的任何现成的指针都应该是有用的.

voID print2(int ** array,int n,int m);main(){    int array[][4]={{1,2,3,4},{5,6,7,8}};    int array2[][2]={{1,2},{3,6},{7,8}};    print2(array,4);}voID print2(int ** array,int m){    int i,j;    for(i=0;i<n;i++)    {       for(j=0;j<m;j++)       printf("%d ",array[i][j]);       printf("\n");    }}
解决方法 这个(像往常一样)在 c faq中解释.简而言之,一个数组衰减到一个指针只有一次(在它衰减后,结果指针不会进一步衰减).

An array of arrays (i.e. a
two-dimensional array in C) decays
into a pointer to an array,not a
pointer to a pointer.

最简单的方法来解决它:

int **array; /* and then malloc */
总结

以上是内存溢出为你收集整理的在C程序中的函数中传递一个2D数组全部内容,希望文章能够帮你解决在C程序中的函数中传递一个2D数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1256552.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存