定义了一个整形数组a[10] 这时候用sizeof(a) 得到的值是多少呢?

我认为a是数组的首地址指针 类型长度应该是4才对(32位) 可是有些书上答案是40 这是为什么? 计算了整个数组所占据内存的长度么 求大神指教

int a[10];
sizeof(a) = sizeof(int) * 10 = 4* 10 =40

sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。追问

我以为a是数组的首地址指针 返回它的类型长度不应该是4么

追答

数组与指针关系
1、数组名的内涵在于其指代实体是一种数据结构,这种数据结构就是数组;
2、数组名的外延在于其可以转换为指向其指代实体的指针,而且是一个指针常量;
3、指向数组的指针则是另外一种变量类型,(在win32平台下,长度为4),仅仅意味着数组存放地址。
关于第三点,如 int a[10];
int *p = a;
这样,sizeof(p) = 4;

追问

我懂了 a是一个常量 不是变量

温馨提示:答案为网友推荐,仅供参考
相似回答