供参考:
ptr指向的是长度为3个int整数的数组的指针,即二维数组a的第一行;
第一个选项*(*(p+5))语法错误,因为p是整数指针,对其直接取两次值会报编译错误;
第二个选项 : ptr指向数组a第一行第一个数字,ptr+1 指向二维数组a第一行第二个数字-'2'(为int型指针),
(*ptr+1)+2指向第二个数字往后2个数字-'4' (int型指针),然后取值就是数字4.
第三个选项: ptr+1指向二维二维数组a的第二行,
*(ptr+1)指向数组a第二行的第一个数字-'4', (ptr+1)+2指向第二行第一个数字往后移动2个数字的位置,即'6'.
第四个选项:ptr指向数组a第一行第一个数字-'1', *ptr+1指向第一行第一个数字往后移动一个数字-'2',然后再加+2,所以就是一个数字'2'的地址值+2
int (*ptr)[3]是一个数组指针,指向一个元素个数为3的整型数组,*(ptr + 1)相当于ptr[1],也就是a[1],a[1]中的值是第二行数组的首地址,所以*(*(ptr+1)+2)相当于a[1][2].
指针默认指向数组第一个元素,+2表示把指针后移2位,指向第二个元素
已投,希望回复