有以下程序         void fun 1 (char *p)         { char *q;            q=p;            while(*q!=’\0’)            {(*q)++;q++;}       

admin2009-03-05  30

问题 有以下程序         void fun 1 (char *p)         { char *q;            q=p;            while(*q!=’\0’)            {(*q)++;q++;}         }         main()         {char a[]={"Program"},*p;          p=&a[3];fun1(p);printf("%s\n",a);         }         程序执行后的输出结果是______。

选项 A、Prohsbn
B、Prphsbn
C、Progsbn
D、Program

答案A

解析 此题考核的知识点是指向数组的指针作为函数的参数及指针的运算,如果形参数组中的元素发生变化,实参也将发生相应变化。指针p指向数组的第三位地址(即字符“g”的地址),q=p也就相当于指针q指向数组的第三位地址。表达式(*q)++,首先根据()的优先级得到a[3]的值“g”,再进行加1运算,所以g也就变成了h;表达式q++是将地址加 1,也就是指向下—个地址町a[4]。然后再执行while()语句,直到遇到’\0’结束循环,返回形参。
转载请注明原文地址:https://kaotiyun.com/show/xlXp777K
0

最新回复(0)