黑马程序员技术交流社区

标题: 行指针 列指针的转换问题 [打印本页]

作者: 晗修    时间: 2015-6-4 17:26
标题: 行指针 列指针的转换问题
本帖最后由 晗修 于 2015-6-4 17:50 编辑

本来是想提问的,突然就明白了,打出来交流一下吧,如果有错请务必告诉我。
     一维数组 int  a[4]= {1,2,3,4}  其中a=&a[0] ,这里我还没有产生什么疑问。
      当学习到二维数组 例如 int  b[2][2] = {1,2,3,4}     b[k] =&b[k][0]
     *(b+k)= b[k] ;
这时我产生了一个疑问:*(b+k) = b[k]    *b[k]=b[k][0]   *(*(b+k)+j)=b[k][j]

1)我们知道b+k和b[k]其实是指向同一个地址的 ,为什么会有取值操作呢?
2)既然是相同的地址 为什么两次取值得到的结果不一样!
3) **p  是首先是取出p中存储的地址 然后再取出p中存贮的地址所指向的地址的值  那么**b=b[0][0] 也是同理,、
那么b,b 首先要存储一个地址 但是数组的内存分配并没有分配空间用来存储地址!


1) b+k 和b[k]虽然指向了同一个地址 但是他们的数据类型不一样;
2)理由同上
3)数组名是常量!
作者: 天涯111    时间: 2015-6-4 17:32
表示指针这一块学的比较难 !!!
作者: 七尺阳光    时间: 2015-6-4 17:54
分析的很好,说的是这个道理




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2