有关C语言

char*s[]={"first","second","third"};printf("%s,%s,%c\n",s[0],s[1]+1,*s[2]);A、first,se... char *s[]={"first","second","third"};
printf("%s,%s,%c\n", s[0], s[1]+1,*s[2]);
A、first,second,*third B、first, econd+1,*third
C、first,econd, *t D、first,econd, t
答案是D,不过为什么呢?
展开
 我来答
百度网友6fe74e2
2014-01-01 · TA获得超过6593个赞
知道大有可为答主
回答量:1973
采纳率:100%
帮助的人:271万
展开全部
char *s[]={"first","second","third"};
那么s[0],s[1],s[2]都是char *,也就是指向char类型变量的指针,分别指向
s[0]---->"first"
s[1]---->"second"
s[2]---->"third"
所以他们分别表示三个字符串的内存中存储区域的首地址
以%s方式输出s[0]好理解
以%s方式输出s[1]+1
之前已经解释过了s[1]表示的是字符串"second"在内存中的首地址
s[1]+1这个地址增1,由于是char *,变1表示下一个字符'e'的地址
从这个地址输出字符串,自然就是"econd"

%c方式输出*s[2],s[2]指向"third", *s[2]就是第一个字符't',最后自然输出 t
zhdzxc123
2014-01-01
知道答主
回答量:44
采纳率:0%
帮助的人:20.8万
展开全部
指针问题,*s[],可以看做是s[][], 这样就好理解了。看做是一个二维数组。如果是做选择题,直接看*s[2] = t.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式