#include<stdio.h> int c[3][4]; int (*p)[4]; p=c;以下能够获取c[1][3]值的是()
*(*(p+1)+3)*(p+1)是p指针+1再取值,这个1就是加的下标, 等价于 p[0+1],获取行指针(一维指针),因为是二维数组,一维取值出来的还是一个指针(指向第二个维度(列)的指针),同样的+3表示 “p[1][0+3]”,就是“p[1][3]”这个指针,然后对他*获取值
*((int *)p+7)(int *) p 我是这么理解的,分两步,第一步把p强转为int就是首地址,再把这个首地址转为指针,这个指针就是指向实际值的指针(这时候可以理解为一维数组了,p[3][4],看成一维数组p[12]),那么现在对指针+7就是p[0+7]=p[7],从二维数组看,第七个数是多少?一行4个数,不就是第二行的第三个数就是c[1][3]这个数了
*(p[1]+3)
*(p+1)+3参考A,没有解引用,打印出来是地址