在C语言中,arr[i] 等价于 *(arr + i)
二维元素空间的名称和空间的地址2中形式:
数组名 + 行下标 + 列下标
元素空间:数组名[行下标][列下标]
元素地址:&数组名[行下标][列下标]
数组名 + 行偏移 + 列偏移 + 解地址
元素空间:*(*(数组名 + 行偏移) + 列偏移)
元素地址:*(数组名 + 行偏移) + 列偏移
题目:
写出下面程序运行结果____________________
int n[3][4]={1,2,3,4,8,7,6,5,9,10,11,12};
int *pn[3] = {n[2],n[0], n[1]};
printf("%d\n",*(pn + 1)[1]);
解释:
运算符优先级:[] 优先级高于 *,等价于 *((pn + 1)[1])。
pn + 1 是 pn 数组第二个元素的地址(即 pn[1] 的地址)。
(pn + 1)[1] 等价于 *((pn + 1) + 1),即 *(*(pn+1)+1)(值为 n[1][0] )
即为8.