#include <stdio.h>
void func(int array[]){
printf("形参array的大小是:%d", sizeof(array)); // 4或8
}
int main(){
int array[3] = {1, 2, 3};
printf("实际数组大小是:%d\n", sizeof(array));
func(array);
return 0;
}
打印结果
实际数组大小是:12
形参array的大小是:8
这是因为,数组名作为参数传递给函数时,传递的是数组的首地址,此时函数中的形参array相当一个指针变量,存放的是一个地址值,因此在函数中的 sizeof(array) 得到的是这个地址值所占空间大小(4或8个字节,由操作系统决定),而在main中的 sizeof(array) 是数组实际的大小3*4=12个字节