洛天依mmd r18:关于c语言的指针的地址运算

来源:百度文库 编辑:高考问答 时间:2024/05/08 14:27:53
书上有个例子,说是
定义了一个简单变量a,他的地址是&a。可以用*&a来访问a中的数据,也可以用(&a)[0]来访问a中的数据。我想问一下,在(&a)[0]中的[0]代表了什么?是什么意思?

[]是数组下标,实际意思就是sizeof(a)这么长的每一块内存的值. &a表示a的首地址,那么(&a)[0]就是以a首地址开始,跨过sizeof(a)*0这么长的一段长度后的内存里面的值.由于是*0,所以就是a自己,如果是(&a)[1]那么就是从a首地址跨过sizeof(a)*1这么长的一段长度后内存的值,也就是存a值的下一块内存(大小为sizeof(a))里面的值,这里由于a是一个变量,所以它下一段内存值是未知的,所以值也是不确定的.

鬼火狼烟 回答的很好啊!
顺便问一下:
sizeof(a)*0 和sizeof(a)*1 以及*0的含义和用法?

&a有两种意义:1.当a是变量时,&a就是它的地址(不要怕c中的地址,以后遇到了,就将&a想成101)2.当a是数组名时,a是数组的首地址。
&a[0]明显是第二种情况,此处a=&a[0]。

建议:偶也曾做过类似的题,但是这些东东除了充斥在各种考试中,实际应用中极少碰到。就比如研究英语中的过去将来时,一般现在将来时。。。。之类很是无聊,平时就很少用的。偶编了若干年c了,悟得:做100道题也赶不上编一个10行的小程序。