数组名被视为其地址,相应的形参是一个指针。
int data[3][4] = {{1, 2, 3, 4}, {9, 8, 7, 6}, {2, 4, 6, 8}}; int total = sum(data, 3);
data的类型是指向由4个int组成的数组的指针。其函数原型如下:
int sum(int (*ar2)[4], int size); or int sum(int ar2[][4], int size)
① 函数参数不能是数组。
② ar2是指向数组的指针,指向由4个int组成的数组。因此,指针类型指定了列数。
函数定义:
int sum(int ar2[][4], int size) { int total = 0; for(int r = 0; r < size; r++) for (int c = 0; c < 4; c++) total += ar2[r][c]; return total; }
① 行数被传递给size参数,列数是固定的(=4)。
② ar2指向数组的第一个元素,则 ar2 + r 指向编号为 r 的元素。
③ 必须对ar2执行两次解除引用,才能得到数据。ar2[r][c] == *(*(ar2 + r) +c)。
④ 声明参数ar2时,没有使用const。因为ar2是指向数组的指针,而const只能用于指向基本类型的指针。
联系客服