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