我在 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;
}
请注意,在此示例中,未检查数组的大小是否为 2。我们可以传递一个一维数组。编译器不关心;我们只告诉他如何访问这个数组中的元素。
关于c - C中这些形式参数的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17340583/