若有以下程序: void g(int **q) { (**q) ++; (*q) ++; } void main() { int line [5]; int *p=line;

admin2010-03-29  23

问题 若有以下程序:    void g(int **q)    {       (**q) ++;       (*q) ++;    }    void main()    {       int line [5];       int *p=line;       for (i=0; i<5; i++)       {          *p=i;          g(&P);       }       for (i=0; i<5; i++)          cout<<line;       cout<<end1;    }    该程序运行后的输出结果为(   )。

选项 A、12345
B、1234
C、11111
D、55555

答案1

解析 本题考核指针的运用。主函数的for循环中向函数g()传入实参&p,则在函数g()中执行“(**q)++;”相当于执行“(**(&p))++”,即(*p)++,其结果就是对相应的数组元素值加1。函数g()中执行“(*q)++;”相当于执行“(*(&p))++”,即p++。其结果为指针p指向下一个数组元素。这样通过for循环给数组元素分别赋值1、2、 3、  4、  5。
转载请注明原文地址:https://kaotiyun.com/show/P3jp777K
0

最新回复(0)