首先要理解一个概念;’数组名‘表示的是数组首元素的地址,二维数组在计算机中是以一维数组的表达形式表达,此题{10,20,30,40,50,60}就是用一维数组表达的二维数组int a[3][2].
题目是一个二维数组 int a[3][2]实际的写法是{{10,20},{30,40},{50,60}},数组a的第一个元素是10,20;第二个元素是30,40,第三个元素是50,60;
*(p+2)表达的意思是数组a首元素地址往后+2,地址+2还是地址,再解引用就变成取这个地址的值,到了数组a的第三个元素{50,60中}的50这个值;
*(*(p+2)+1)表达的是在这个元素值*(p+2)的后面+1,那么就到了60这个,再解引用,取出60这个值,就是题目的答案。
希望能对你有帮助,有帮助的话就帮我点个赞,谢谢,其次我也是学C语言才1个月不到,可以交流下心得。
指针 *p指向的是数组 这是一个二维数组。
(*p)[2] 将数组转换成了一维数组。
所以 *p+2 移动了两位。从10 移动到30
再加1 所以移动到了60
是如何指到60