例题:若有以下定义和语句:
int s[4][5],(*ps)[5]; ps=s;
则对s数组元素的正确引用形式是();
A.ps+1 B.*(ps+3) C.ps[0][2] D.*(ps+1)+3
A.ps+1中ps是数组首元素地址,进行+1运算操作后地址偏移,但依然是地址,而不是数组元素。
B.*(ps+3)是对数组首元素地址进行+3操作后,再进行 * 运算取得元素。但是s[ ][ ]是二维数组,只进行一次*运算的话得到的是一维数组的值,要想把地址转变为s中的元素的话应该进行二次取 * 。【**(ps+3)】
C.这是最普通的引用方法,正确;
D.*(ps+1)+3;问题和B选项相类似,只进行一次*运算的话得到的是一维数组的值,二维数组的地址。
总结:
数组名表示数组首元素地址;
二维数组可以看成是每个元素都是一个数组;
nums[i]==*(nums+1)