首页 > 试题广场 >

下列代码段将打印出 ( ).

[单选题]

下列代码段将打印出 ().

#include <stdio.h>
int main (void)
{
    int a=2,*p1,**p2;
    p2=&p1;
    p1=&a;
    a++;
    printf("%d,%d,%d\n",a,*p1,**p2);
    return 0;
}

  • 3,2,3
  • 2,2,2
  • 3,3,3
  • 3,3,2
这么解释,p1是一个房间的门牌号,这个房间里面放了一个数字2,而p2也是一个房间的门牌号,这个房间里放的是p1这个门牌号,所以*p1返回2,**p2可以这么理解,第一步返回p2里面的东西——即p1,然后*p1还是返回2

发表于 2017-09-14 14:52:28 回复(2)
首先经过a++,a变成了3;
p1是指向a的地址的,因此 *p1就是a的值,即为3;
p2是指向p1的地址的,因此*p2就是p1的值,即a的地址,那么**p2就是a的值,也就是3
发表于 2021-03-15 08:47:58 回复(0)
变量a中的数值变化不影响自身的地址,无论一级指针还是二级指针都能够访问a中的现在的值
发表于 2020-10-31 15:53:28 回复(0)
首先经过a++,a变成了3;
p1是指向a的地址的,因此 *p1就是a的值,即为3;
p2是指向p1的地址的,因此*p2就是p1的值,即a的地址,那么**p2就是a的值,也就是3
发表于 2022-07-08 15:32:34 回复(0)