32位系统下
void Func ( char str[100] )
{
sizeof(str) = ?
}
void *p = malloc(100);
sizeof(p) = ?
计算两个sizeof的值
答案
sizeof(str) = 4
sizeof(p) = 4
解答: Func(char str[100])中数组名作为函数形参时,在函数体内,数组名失去了本身的内涵,仅仅是一个指针;同时还失去了作为常量的特性,可以自加 自减,可以被修改。
数组名本质如下:
1、数组名指代一种数据结构,即数组。
2、数组名可以转换为指向其指代体的指针,而且是指针常量,不能自增自减,不能被修改。
char str[10];
str++;
编译出错,提示str不是左值。
3、数组名作为函数形参时,沦为普通指针。
——摘自牛客app
本文探讨了在32位系统中使用sizeof运算符计算数组名和指针变量大小的问题。揭示了在函数参数传递过程中,数组名退化为指针的本质,并给出了具体的计算结果。
1296

被折叠的 条评论
为什么被折叠?



