|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
第26课测试题原题如下:
5. 定义以下变量:
- 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];
复制代码
想要通过指针 pa 和 ppa 访问数组 a 中的 'x' 元素,请问表达式应该怎么写?
对于pa的表达式,答案给出的是*(*(pa+8)+1),这个答案我可以理解。
我自己写的答案是(*(*(&pa+2)+2)+1),不知道这个答案是否可行:我想先改变它对应的跨度,再进行加减,麻烦大家帮忙看看。
但是&pa和&a[1]是不一样的,&pa是变量pa的地址,&a[1]是a[1]的地址
&pa和&a[1]是不一样的
- #include <stdio.h>
- int main(void)
- {
- 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];
- printf("%.8x\n", &pa);
- printf("%.8x\n", &a[1]);
- return 0;
- }
复制代码
|
|