C语言选择题,求详解
以下程序的输出结果是()。main(){chars[]=“123”,*p;p=s;printf(“%c%c%c\n”,*p++,*p++,*p++);}A.123B.32...
以下程序的输出结果是()。
main()
{ char s[]=“123”,*p;
p=s;
printf(“%c%c%c\n”,*p++,*p++,*p++);
}
A.123 B.321 C.213 D.312 展开
main()
{ char s[]=“123”,*p;
p=s;
printf(“%c%c%c\n”,*p++,*p++,*p++);
}
A.123 B.321 C.213 D.312 展开
6个回答
展开全部
数组指针没有任何变化,输出都是111。。
因为指针p是指向了第一个字符1,而%c是读入并打印出来一个字符。。而printf中*p意思是s[]第一个值,读入到打印函数,打印到屏幕完了然后把这个读入值+1,而数组指针值还是没有变的,总是指在1的位置。
可以用下面更改程序验证:把其中一个变成前++
#include<stdio.h>
main()
{ char s[]="123",*p;
p=s;
printf("%c,%c,%c\n",++*p,*p++,*p++);
}
++*p,读入数值+1·,最后结果是2,1,1。。说明*p只是第一个字符值,而原数组指针是没有变化的。
因为指针p是指向了第一个字符1,而%c是读入并打印出来一个字符。。而printf中*p意思是s[]第一个值,读入到打印函数,打印到屏幕完了然后把这个读入值+1,而数组指针值还是没有变的,总是指在1的位置。
可以用下面更改程序验证:把其中一个变成前++
#include<stdio.h>
main()
{ char s[]="123",*p;
p=s;
printf("%c,%c,%c\n",++*p,*p++,*p++);
}
++*p,读入数值+1·,最后结果是2,1,1。。说明*p只是第一个字符值,而原数组指针是没有变化的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询