char *a[2]={"one","two"},**p=a;printf("%s",*(p++)+1);printf("%c",**p-1);求解答分析

 我来答
chenqa08
推荐于2018-03-20 · TA获得超过275个赞
知道答主
回答量:105
采纳率:0%
帮助的人:110万
展开全部
char *a[2]={"one","two"}, //a为指针数组,a[0]为"one"的首地址,a[1]为"two"的首地址。
**p=a; //p为二级指针,初始化为(指向)数组a的首元素即a[0]
printf("%s",*(p++)+1); //(p++)先返回(取得)p值使用,即a[0]中的值!
// 解引用后*(p++)得到"one"的首地址,再+1,
// 就指向"one"的n处,输出ne。然后p进行加1,指向a[1]。
//p++返回的是p自增前的值,不是自增后的值,切记!
//其实*(p++)可以写成*p++,因为++比*的优先级高!
printf("%c",**p-1); //注意p已经指向了a[1]!**p即取得首字符t,
//(把t)-1后就是输出s了(s比t的值小1,请查看ascii码表)!
追问
解引用后*(p++)得到"one"的首地址,再+1,就指向"one"的n处,输出ne。
什么是解引用?
小只木a
2011-12-19 · TA获得超过190个赞
知道小有建树答主
回答量:199
采纳率:0%
帮助的人:79.7万
展开全部
结果为nes,
char *a[2]={"one","two"},//定义了一个字符串数组
**p=a;//额 ,这个前面应该定义了一个char类型二级指针,然后把p指向a数组的首地址,也就是指到了o的位置
printf("%s",*(p++)+1); //p++,运算级较低,后算,先*p,表示 one 这个字符串的首地址,然后+1,指到了n的位置,然后printf,输出ne,然后自增,p指到了two字符串的首地址,
printf("%c",**p-1);// **取值,取出来t,然后-1,正好是s
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式