c语言二级指针与一维数组的问题 10C

在c语言中用二级指针指向一维数组,(*变量名)的值为什么与数组名的值不一样啊图片说明

6个回答

图片说明
其实你的问题出在对buf的理解上。buf[10]是一个数组,buf是数组名。那么单独使用buf的时候,buf就已经退化成了指针。其实buf与&buf的值是一样的,都是数组中第一个元素的地址。
你看图片中选中的那4个,你会发现他们的地址都是一样的。

yuanandwang
yuanandwang buf[10]是一个数组,buf是数组名。那么单独使用buf的时候,buf就已经退化成了指针。其实buf与&buf的值是一样的,都是数组中第一个元素的地址。
大约 2 年之前 回复
cmy158
cmy158 buf是数组的指针,也是数组首元素的指针。 myp是数组的指针的指针,也就是它是代表一个地址,这个地址上存放的数字是一个指针,这个指针指向buf数组首元素。 指针也是一个值,它是一个整数,指针也需要一个内存单元(通常4字节)存放,只是这个整数是表示一个地址的值。因此指针和一般变量一样,也可以取地址。
大约 2 年之前 回复

buf是数组的指针,也是数组首元素的指针。
myp是数组的指针的指针,也就是它是代表一个地址,这个地址上存放的数字是一个指针,这个指针指向buf数组首元素。
指针也是一个值,它是一个整数,指针也需要一个内存单元(通常4字节)存放,只是这个整数是表示一个地址的值。因此指针和一般变量一样,也可以取地址。

&buf其实与buf地址是一样的。至于怎么运算,得看编译器。也就是&buf本来就不等于*myp;

数组名称表达时候包含数组中全部元素,只能在名称后添加序号才能取到具体指,在后面括号中无数字时,系统会默认为起始位0,变量名当然不能和数组名一致,如果一致会导致变量变化导致数组中全部元素的变化!!!

&buf代表的不是取buf这个变量的地址,而是取数组元素的地址。虽然&buf和buf得内存地址相同,但它们的意义不相同,它是代表整个数组的,它的进阶单位是整个数组的字节长度(这里是10*1=10)

buf[10]是一个数组,buf是数组名。那么单独使用buf的时候,buf就已经退化成了指针。其实buf与&buf的值是一样的,都是数组中第一个元素的地址。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问