C语言中指针int * p=0;和int * p; * p=0;和“&”的关系和区别详解

  

初学者在学习C语言的时候,最头疼的可能就是<强>指针强,话不多说。让我们直接进入正题

  

<强>直接上代码

        int主要(空白)   {   int * p=0;   printf (" % d”, * p);   系统(“暂停”);   返回0;   }      

直接运行,好了,程序是不是报错了?那就对了。因为此时的int * p=0实际等于int * p;p=0;
  让我们来验证一下对不对

        int主要(空白)   {   int * p=0;   printf (" % d”, p);   系统(“暂停”);   返回0;   }      

 C语言中指针int * p=0;和int * p; * p=0;和“&”的关系和区别详解

  
  

这说明此时指针* p装的不是0,而是以0作为地址的一个值,输出地址为0的值编译器当然会直接报错。
  那为什么会这样呢?因为此时的int * p其实是(int *) p;把它看成是一个新的类型,就和int=0;差不多,这也就解释了为什么会输出0的原因。

  

而我们知道定义一个指针* p, p里面装的是地址,* p则表示这个地址上所储存的值,
  *那么我们如何获取这个地址呢*
  这时候就可以用“,”

     

比如         int * p;   int=2;   p=,;   printf (" % d \ n”* p);      

此时的p通过取地址符号取得了一个的地址,那么* p储存的就是一个的值,你也可以把它看成是另一个,改变它的值也可以改变一个的值
  

  

比如这样

        int * p;   int=2;   p=,;   * p=1;   printf (" % d \ n”* p);      

此时的就会输出1

  

  

以上所述是小编给大家介绍的C语言中指针int * p=0;和int * p; * p=0;和“和”的关系和区别详解,希望对大家有所帮助,也非常感谢大家对网站的支持!

C语言中指针int * p=0;和int * p; * p=0;和“&”的关系和区别详解