C/C++二维数组

已知在C/C++中当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。

1、二维数组的概念

  在C语言中,二维数组实际上是一种特殊的一维数组,它的每个元素也是一个一维数组。因此,二维数组下标形式正确写法如下:int arrays[i][j]。

2、二维数组作为函数参数(传递数组时必须让编译器知道数组最后一维的大小,例如二维数组是列)

  规定:如果将二维数组作为参数传递给函数,那么在函数的参数声明中必须指明数组的列数(否则编译器无法获得最小元素的地址,因为编译器不知道列的跨度是多少就无法精确的对二维数组进行分行),数组的行数没有太大关系,可以指定也可以不指定。因为函数调用时传递的是一个指针,它指向由行向量够成的一维数组。因此二维数组作为函数参数正确写法如下所示:   

void Func(int array[3][10]); 
void Func(int array[ ][10]);

二维数组指针的定义:

char (* p_raw)[8];

因为数组的行数无关紧要,所以还可以写成如下形式:

void Func(int (*array)[10]);  注意*array需要用括号括起来。

摘自:http://www.cnblogs.com/Anker/archive/2013/03/09/2951878.html

原文地址:https://www.cnblogs.com/jiahu-Blog/p/4548213.html