有关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,不过为什么呢? 展开
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,不过为什么呢? 展开
2个回答
展开全部
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
那么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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询