|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
int main()
{
char a[4][3][2] = {
{
{'a', 'b'}, {'c', 'd'}, {'e', 'f'}
},
{
{'g', 'h'}, {'i', 'j'}, {'k', 'l'}
},
{
{'m', 'n'}, {'o', 'p'}, {'q', 'r'}
},
{
{'s', 't'}, {'u', 'v'}, {'w', 'x'}
}
};
char (*pa)[2] = &a[1][0];
char (*ppa)[3][2] = &a[1]
printf("%c\n",*(*(pa+8)+1));
printf("%c",*(*(*(ppa+2)+2)+1));
}
这里数组指针的方括号左右有什么联系嘛,为什么加或减一个方括号就出错了?
第一句是定义了一个一维指针,它有两个元素,第二句是定义了一个二维指针,它有三行,每行有两个元素
这两句是等价的,都是将字母 g 那个单元的地址赋给指针
*(*(pa+8)+1) 与 *(*(*(ppa+2)+2)+1) 也是等价的,都是指向字母 x,所以,两句输出的都是字母 x
|
|