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

前端之家收集整理的这篇文章主要介绍了在C程序中的函数中传递一个2D数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
下面的程序(将数组传递给函数的玩具程序)不编译.
请解释一下,为什么编译器无法编译(由于技术原因还是因为标准原因)?

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

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&C++相关文章