在这个程序中,请解释输出

时间:2017-10-31 19:21:40

标签: c pointers null

void main()
{
    int a=5,*p,*c=NULL;
    printf("p=%u",p);    //OUTPUT p=3839036080
    printf("\nc=%u",c);  //OUTPUT c=0

}

这里我们没有为p分配任何地址,为什么它甚至可以打印任何东西? c已分配NULL,这意味着它将值存储为0

1 个答案:

答案 0 :(得分:0)

  

这里我们没有为p分配任何地址,为什么它甚至可以打印任何东西?

您致电printf(),因此必须打印某些内容。该变量未初始化,因此它会打印发生在用于保存变量的内存中的任何内容。

  

并且c被指定为NULL,这意味着它将值存储为0?

是的,NULL是一个扩展为0(char *)0或同等内容的宏。