2. p = a;
3. p+i == &b[i],
4. b[i] ==*(p + i),
5. b[i] + j == &b[i][j],
6. b[i][j] == *(*(p + i) + j)
1. 定义一个二维数组 和 一个数组指针
2. 正数组指针指向这个二维数组
3. 第i行的首地址
4. 第i行一维数组的值
5. ?
6. ?
帮忙看一下 我前4行理解的对不对? 还有第5,6行是什么意思?看不懂 帮忙解释一下
定义一维数组指针应该是int *p[4] 二维数组指针是int *p[4][4]
最好把你自己的程序执行一下再输出看看是上面!
加深对指针理解可以参考下面程序!
#include <stdio.h>
char *pp[2][3]={ { "abc", "defgh", "ijkl"} , { "mnopqr", "stuvw", "xyz"} }; //2维数组等价于此
main ( )
{ printf("%c\n",***(pp+1));
//*(pp+1)即pp[1]指向{ "mnopqr" , "stuvw", "xyz"}元素
//**(pp+1)即pp[1][0]指向"mnopqr"
//***(pp+1)即pp[1][0][0]即'm'
printf("%c\n",**pp[0] );
//pp[0]指向{ "abc", "defgh", "ijkl"}
//*pp[0]即pp[0][0]指向"abc"
//**pp[0]即pp[0][0][0]即'a'
printf("%c\n", (*(*(pp+1)+1))[4] );
//*(pp+1)即pp[1]指向{ "mnopqr" , "stuvw", "xyz"}
//*(*(pp+1)+1)即pp[1][1]指向"stuvw"
//(*(*(pp+1)+1))[4]即pp[1][1][4]即'w'
printf("%c\n", *(pp[1][2]+2) );
//pp[1][2]指向"xyz"
//*(pp[1][2]+2)即pp[1][2][2]即'z'
printf("%s\n", **(pp+1) );
//*(pp+1)即pp[1]指向{ "mnopqr" , "stuvw", "xyz"}
//**(pp+1)即pp[1][0]指向"mnopqr"
//输出类型string,输出"mnopqr"
}