#include<stdio.h> int main() { int a[5][5]={1,3,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}; int (*p)[5]; //p是一个数组指针,它指向一个数组,这个数组里面有5个元素。 p=a; // p是指向a[0][5]这个小数组的首地址,不是指向a[0][0]这个元素的首地址,所以p+1表示a[1][5]这个小数组的首地址 printf("%d\n",**(p+1)); // 6 printf("%d\n",*(*p+1)); // 3 printf("%d\n",**p+1); // 2 **p是a[0][0] printf("%d\n",(*p)[1]); // 3 第一个数组里面的第二个元素 printf("%d\n",*p[1]); // 6 []的优先级比*高 printf("%d\n",*p); // *p是1的地址,**p才是1. return 0; }