第1个回答 2012-07-27
首先你得承认,指针是个又难又简单的问题,也许一个JAVA高手,都不一定理解指针;
理解的人,指针问题可以触类旁通,不理解,迷雾重重。。。
首先给你讲一下为什么有指针的存在? 在计算机存储中,每一个内存单元都有一个地址值,就像你家房子有个门牌号,它是自然存在的,否则这个存储单元就是孤立的。通过指针,进行取指操作,就可以访问你和你的家人。。。有了门牌号(指针),我就几乎不用问别人,可以顺势找到你家,道理很简单吧。那接下来就题论题。
a 是二维数组名,涉及到二级指针,就相当于我用有个门牌号,记录了你家的门牌号,那我拥有的门牌号就是二重门牌号,而第二段讲的指针就是一级指针,就是我直接知道你家的门牌号。
既然a是一个二级指针,那么a[n]的内容就是一级指针,也就是地址值,例如:a[0],0行地址,也是0行的第0个元素的地址,换句话,也可以说a[0]是0行0列地址。这里面还有个比较令人苦恼的问题,就是a的值是2000,a[0]的的值也是2000,那么&a[0][0]的值也会是2000,实际它们一样是必然的,因为它们的值的都和数组的第0个元素有关,但辈分不一样,所以取第0个元素过程不一样,**a==*a[0]==a[0][0].
我已经尽力深入浅出了,若还是不能理解,多想想,时间长了自然就明白了。
第2个回答 2012-07-27
数组的a【】的a 是数组名 也代表该数组的 地址所以*a 就是取出该数组第一个 地址的值 如果是二维当然 a【i】【i】 a【i】 就是a【i】行的首个数值的地址 那么*a【i】同样是取出该 数的值 a因为是地址 所以(a+1) 就是该数组下一个数值的 地址 *(a+1)同样也是取值。。。 int *a 的*只是定义 a是一个指针 在单独使用的时候是 类似于取出该地址的值的 作用。。。希望我说的对你能有帮助。。
第3个回答 2012-07-27
第二行,第二列。0行0列元素地址。错误!应该是“0行0列的值”
书不一定正确,能发现书的错误,并且很确定它是错的。那你就牛B了,目前看来你需要提高啊本回答被网友采纳
第4个回答 2012-07-27
a声明得不一样,你不把a的声明贴出来谁知道是什么东西
照这张图推算 ,a应该是二维数组,里面存的是指针,就是一个指向指针的指针