可能重复:
C 中 Sizeof 的行为
有人可以解释为什么以下 C 代码的行为如此:
#include <stdio.h>
int sizeof_func(int data[]) {
return sizeof(data);
}
int main(int argc, char *argv[]) {
int test_array[] = { 1, 2, 3, 4 };
int array_size = sizeof(test_array);
printf("size of test_array : %d.\n", array_size);
int func_array_size = sizeof_func(test_array);
printf("size of test_array from function : %d.\n",
func_array_size);
if (array_size == func_array_size) {
printf("sizes match.\n");
} else {
printf("sizes don't match.\n");
}
return 0;
}
我预计输出是:
size of test_array : 16.
size of test_array from function : 16.
sizes match.
但相反,我得到了:
size of test_array : 16.
size of test_array from function : 4.
sizes don't match.