鱼C论坛

 找回密码
 立即注册
查看: 2458|回复: 1

请问这个问题中*P是多少?

[复制链接]
发表于 2017-3-13 14:06:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
main() {char*a[2]={"one","two"},
**p=a;
printf("%s,",*(p++)+1);
printf("%c\n",**p-1);
答案是ne,s
数组中的英文是另外算的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-3-13 15:45:06 | 显示全部楼层
char*a[2]是字符指针数组,数组中每个元素都是一个字符指针,相当于二维数组
**p=a是指向字符指针的指针,类型也是char
*(p++)相当于先使用p指针的值即是a *p就是a[0],数组名称其实实质也是一个指针 *a就是a[0]
*(a+1) 就是a[1] *(p++)先得出来的值就是“one”字符串,字符串其实也是一种字符指针
*(p++)+1就是字符串"one"偏移到第二位,那么得到的值就是“ne”
然后最后处理p++ 这时候*p就是“two”了  指向的是a[1]
**p就相当于a[1][0] 取得是字符串第一个字符的值 得出来是字符‘t’,而‘t’-1 在ASCII中得到的是字符's'
你理解下 不明白可以再问
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 00:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表