【发布时间】:2015-09-16 02:30:37
【问题描述】:
我使用以下代码将数组传递给函数并在调用函数之前和之后打印其大小:
#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;
}
运行代码后,我得到了一个奇怪的结果:
通过前的大小:12
通过后大小:8
我的问题是:为什么数组的大小会从 12 变成 8?
【问题讨论】:
-
因为数组名在作为函数参数传递时会衰减为指针。
-
这个问题在这个网站上有很多重复。