sum*_*mdi 0 c pointers multidimensional-array
我在C函数的形式参数中读了这两种不同类型的多维数组声明.
int c[][10];
int (*c)[10];
这两个怎么样?我感觉不到它.任何人都可以用一些例子解释这个,第二个人试图做什么?对不起,如果以前曾经问过这个问题.如果有的话,请将我重定向到副本.
作为函数参数,int* c和int c[]甚至int c[7]是相同的.见C FAQ.
该[10]部分仅告诉编译器如何进行访问数组中元素的算法 - 例如c[3][5].这两个声明都是针对多维数组的,其第二维(就编译器而言,在此函数内)的大小为10.
例:
#include <stdio.h>
int sum_all(int c[][2], int len) {
int res = 0, i ,j;
for (i=0; i < len; i++)
for (j=0; j < 2; j++)
res += c[i][j];
return res;
}
int main() {
int a[3][2] = { { 1, 2}, {3, 4}, {5, 6} };
printf("sum is %d\n", sum_all(a, 3));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
请注意,在此示例中,未检查数组的大小为2.我们本可以通过一维数组.编译器不关心; 我们只告诉他如何访问这个数组中的元素.