御笔剑客 发表于 2017-11-21 16:57:00

关于二维数组地址的问题

如定义一个二维数组int zippo
因为zippo是第一行的地址,也是第一行第一个元素的地址,但是zippo是占用两个int大小对象的地址,而zippo是占用一个int大小对象的地址,这不是冲突了吗?
这样为什么导致zippo+1和zippo+1表示值不同呢?

BngThea 发表于 2017-11-21 17:31:57

不会
因为任何二维数组必须告知编译器第二维的长度,正是根据这个长度来确定zippo+1应该移动多少距离

御笔剑客 发表于 2017-11-21 18:04:41

BngThea 发表于 2017-11-21 17:31
不会
因为任何二维数组必须告知编译器第二维的长度,正是根据这个长度来确定zippo+1应该移动多少距离

所以zippo虽然和zippo的地址一样,但如果他们加一。编译器会用不同的方式相加,得到的结果是不同的,是这样吗?

御笔剑客 发表于 2017-11-21 18:06:35

BngThea 发表于 2017-11-21 17:31
不会
因为任何二维数组必须告知编译器第二维的长度,正是根据这个长度来确定zippo+1应该移动多少距离

还有一个问题为什么要对zippo解引用2次才能得到内层元素的地址呢?{:5_94:}

BngThea 发表于 2017-11-21 18:29:44

御笔剑客 发表于 2017-11-21 18:04
所以zippo虽然和zippo的地址一样,但如果他们加一。编译器会用不同的方式相加,得到的结果是不同的, ...

对,是这样的

BngThea 发表于 2017-11-21 18:30:44

御笔剑客 发表于 2017-11-21 18:06
还有一个问题为什么要对zippo解引用2次才能得到内层元素的地址呢?

因为二维数组本身就是一个指向指针的指针
所以你看作为形参的时候都是两个*的写法

御笔剑客 发表于 2017-11-21 19:12:43

BngThea 发表于 2017-11-21 18:30
因为二维数组本身就是一个指向指针的指针
所以你看作为形参的时候都是两个*的写法

我明白了,谢谢你了
页: [1]
查看完整版本: 关于二维数组地址的问题