一道C语言题求详解过程
有如下数组定义语句“chars[]=“abcd””;则下列语句执行后的输出结果是()。char*p=s;while(*p)p++;for(p--;p-s>=0;p--)p...
有如下数组定义语句“char s[]=“abcd” ”; 则下列语句执行后的输出结果是( )。
char *p=s;
while(*p)
p++; for(p--;p-s>=0;p--)
puts(p);
A. abcdbcdcdd B. abcd C. dcdbcdabcd D. dcba 展开
char *p=s;
while(*p)
p++; for(p--;p-s>=0;p--)
puts(p);
A. abcdbcdcdd B. abcd C. dcdbcdabcd D. dcba 展开
4个回答
展开全部
“char s[]=“abcd”这行实际上在内存中”abcd“后面还有一个结束符‘\0’
while(*p)
p++;
这句代码将的意思是指针p不断自加,直至指向'\0'跳出。此时p指向的是字符串”abcd“的下一个字节。
for(p--;p-s>=0;p--)
puts(p);
这句代码首先将p自减,于是p指向了‘d’。puts(p)后打印d
下一次p再次自减1,指向‘c’。puts(p)打印到‘\0’结束,打印cd
后面不断循环,依次打印bcd和abcd
此时p指向‘a’,下一次循环p自减,位置相对数组s靠前,p-s<0,跳出循环,函数结束。
while(*p)
p++;
这句代码将的意思是指针p不断自加,直至指向'\0'跳出。此时p指向的是字符串”abcd“的下一个字节。
for(p--;p-s>=0;p--)
puts(p);
这句代码首先将p自减,于是p指向了‘d’。puts(p)后打印d
下一次p再次自减1,指向‘c’。puts(p)打印到‘\0’结束,打印cd
后面不断循环,依次打印bcd和abcd
此时p指向‘a’,下一次循环p自减,位置相对数组s靠前,p-s<0,跳出循环,函数结束。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
选C
*p =s ,S数组的首地址赋给p, while(*p) 取地址的内容并判断是否为字符结尾,p++ 指针自加,最后指向字符'd'的地址。
s的地址是字符型,p指针的地址也是字符型,可以相减。for(p--;p-s>=0;p--) 循环使指针从 字符‘d’ 的位置开始,变到'c', 再到'b', puts(p),输出地址后面的字符串。共四个循环
*p =s ,S数组的首地址赋给p, while(*p) 取地址的内容并判断是否为字符结尾,p++ 指针自加,最后指向字符'd'的地址。
s的地址是字符型,p指针的地址也是字符型,可以相减。for(p--;p-s>=0;p--) 循环使指针从 字符‘d’ 的位置开始,变到'c', 再到'b', puts(p),输出地址后面的字符串。共四个循环
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询