经典指数          
原因
2176
浏览数
0
收藏数
 

turbo c环境下,下面程序运行的结果是()
int main()
{
    printf("\n");
    int a[5] = {1, 2, 3, 4, 5};
    int *p, **k;
    p = a;
    k = &p;
    printf("%d", *(p++));
    printf("%d", **k);
    return 0;
}

  • 11
  • 21
  • 22
  • 12

     举报   纠错  
 
切换
1 个答案

程序首先定义了一个一维数组a,赋其初值,并定义一个同类型的指针变量p和一个指向指针的指针变量k,然后让指针变量p指向数组的首地址,接着将指针变量p的地址值赋给指向指针的指针变量k。在第一条输出语句中,首先我们需要弄清楚*(p++)的作用,它是先调用指针变量p的值,然后使其自加,输出效果等价于*p,因此,最后输出的结果是数组中的第一个元素。在第二条输出语句中,我们需要弄明白**k的作用,指向指针的指针变量类似于指针变量,如果用**k表示一个数值,可以确定这条输出语句的输出结果是一个数值,而非地址,从表达式k=&p可以看出,k的值是指针变量p的地址值,p的值改变后,k能实时得到改变,那么在第一条输出语句对p的改变,在第二条输出语句中得到了体现。因此,**k输出的是数组中的第二个元素.

 
切换
撰写答案