A-A+
有以下程序: #include <stdio.h>void funl (char * p){
问题详情
有以下程序: #include <stdio.h>void funl (char * p){ char * q; q=p; while(*q! ="") } (*q) ++;q++;}mains(){ char a[ ] = { "Program" } , * p; p = &a[3]; fun1 (p); printf("% s n" ,a);}程序执行后的输出结果是()。
A.Prohsbn
B.Prphsbn
C.Progsbn
D.Program请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:A
解析:在main函数中,p=&a[3]说明指针p指向a数组的第4个字符(即字符'g');fun1中的q=p意味着指针q也指向了a数组的第4个字符。执行while语句,表达式(*q)++使'g'+1,使'g'变成了'h';表达式q++使q指向a[4]的起始地址。继续执行while语句,直到遇到'\0'结束循环,返回形参。最终得到的结果是从字符串"Program'的第4个字符开始,每个字符加1。