先猜猜代码的输出
#include <stdio.h>
int main(int argc, char **argv)
{
int a[10];
printf("数组a的大小:%d", sizeof(a));
return 0;
}
代码的输出结果是“数组a的大小:40”
这告诉我们
1、sizeof(a) != 4,sizeof求的是数组的大小,不是指针a的大小(4)
2、sizeof(a) != 10,sizeof返回的是对象占用的总的字节数,由上可知,本代码返回数组a所占据的总的字节数,所以是40。
但是!若数组是动态分配的,即:int *a = new int[10];
则sizeof(a) == 4