我使用以下代码将数组传递给函数并在调用函数之前和之后打印其大小:
#include <stdio.h>
int passing_array(int array[]) {
int size = sizeof(array);
printf("The size after passing: %d\n", size);
}
int main () {
int a[] = {1, 2, 3};
int size = sizeof(a);
printf("The size before passing: %d\n", size);
passing_array(a);
return 0;
}
运行代码后,我得到了一个奇怪的结果:
The size before passing: 12
The size after passing: 8
我的问题是:为什么数组的大小从12变成了8?
最佳答案
int passing_array(int array[]) {
int size = sizeof(array);
printf("The size after passing: %d\n", size);
}
与
相同int passing_array(int* array) {
int size = sizeof(array);
printf("The size after passing: %d\n", size);
}
因此,size
是指针的大小。
关于c - 数组的长度在传递函数后发生变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32598769/