数组名在做函数形参时的变化

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



版权声明:本文为yaotan666原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。