本帖最后由 晗修 于 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)数组名是常量! |
|