早教吧 育儿知识 作业答案 考试题库 百科 知识分享

有关C语言char*s[]={"first","second","third"};printf("%s,%s,%c\n",s[0],s[1]+1,*s[2]);A、first,second,*thirdB、first,econd+1,*thirdC、first,econd,*tD、first,econd,t不过为什么呢?

题目详情
有关C语言
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
不过为什么呢?
▼优质解答
答案和解析
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