设有如下变量定义char aa[ ][3]={‘a’,’b’,’c’,’d’,’e’,’f’};

设有如下变量定义:charaa[][3]={‘a’,’b’,’c’,’d’,’e’,’f’};char(*p)[3]=aa;则以下程序段的运行结果是()。p++;prin... 设有如下变量定义:
char aa[ ][3]={‘a’,’b’,’c’,’d’,’e’,’f’};
char (*p)[3]=aa;
则以下程序段的运行结果是()。
p++;
printf(“%c”,**p);
A)a B)b
C)c D)d
麻烦高手帮忙写出求解过程。谢谢。
展开
 我来答
huafeng86999
2010-06-13 · TA获得超过277个赞
知道小有建树答主
回答量:262
采纳率:100%
帮助的人:272万
展开全部
char (*p)[3]
我们可以可以看到p是指向一个有三个元素的字符数组的指针。

那么当p++的时候,相当于跳过指向的数组。

再来看一下,char aa[ ][3]={‘a’,’b’,’c’,’d’,’e’,’f’};
我们可以发现aa是二维数组,而p指向的是一维数组。
所以我们去分解aa让他变成两个一维数组
{‘a’,’b’,’c’}和{’d’,’e’,’f’}
p在++操作前其实是指向前面那个一维数组,当p++之后,p此时其实指向了{’d’,’e’,’f’},那么**p就是取当前数组的第一个字符,我们可以知道那个字符就是‘d’。

清楚了吗?

你会有疑问为什么二维数组为什么可以分解成两个一维数组,因为数组不管是几维其实就是一块连续的内存。‘d’其实就是接在‘c’的后面。懂了吗?
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式