#include "stdio.h"
int temp[2][4] = {{ 1,2,3,6 } , { 5,4,7,9 }};
int main() {
printf("%d\n" , **temp);
printf("%d\n",**(temp + 1));
printf("%d\n", *(*(temp + 1) + 1));
return 0;
}
自定义了一个二维数组temp[2][4],其又相当于两个一维数组合并,每个一维数组有四个元素。
首先明白对于一维数组来说,数组名代表数组第一个元素的首地址。这句话很重要。
那么对于这个二维数组来说,相当于由temp[0]和temp[1]组成,temp[0]就是一个数组名,它等于&temp[0][0]。
这点明白后所有二维数组和指针就简单了,这个main里的第一个输出,temp = &temp[0](不明白的时候想想紫色的那句话)。而temp[0] = &temp[0][0](还是紫色那句话),所以**temp = temp[0][0]。所以第一个输出是1。
第二个输出,temp+1 = &temp[1],下面的分析和上面一样,结果为5。
第三个输出,*(temp+1) = temp[1],*(temp+1) +1 = temp[1][1],剩下同理,结果为4。