[问题] 二维阵列指标表示方法

楼主: lllll12b56 (saiwagon)   2022-02-02 17:35:53
想问各位大神
例如我宣告a[5][5]这个二维阵列
为什么a+2的值跟*(a+2)的值都是位置
还是同样的位置?
我原本还以为*(a+2) = a[2][0]
结果自己试才知道要取a[2][0]要**(a+2)
作者: wei115 (ㄎㄎ)   2022-02-02 18:23:00
阵列和指标不一样 只是编译器会想让这两个看起来一样阵列是连续的内存 取值是加上偏移指标的指标是有一个位置内存了位置 再由这个位置找到值可是在C里面a[2][0]却可以表示成*(*(a+2)+0) 这些差异编译器会默默帮你搞定
作者: Dracarys (MayShowGunMore)   2022-02-02 20:28:00
*(a+2)的type是T[5],**(a+2)会work是因为array to ptrdecay成&T[2][0]然后你再dereference啊不是&T[2][0]是&a[2][0]
楼主: lllll12b56 (saiwagon)   2022-02-02 21:03:00
感谢各位

Links booklink

Contact Us: admin [ a t ] ucptt.com