单选题 有以下程序 void fun1(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
【答案解析】此题考核的知识点是指向数组的指针作为函数的参数及指针的运算,如果形参数组中的元素发生变 化,实参也将发生相应变化。指针 p 指向数组的第三位地址(即字符“g”的地址),q=p 也就相当于指针q 指向数组的第三位地址。表达式(*q)++,首先根据()的优先级得到 a[3]的值“g”,再进行加 1 运算,所以g 也就变成了 h;表达式 q++是将地址加 1,也就是指向下一个地址 a[4]。然后再执行 while()语句,直到遇 到'/0'结束循环,返回形参。