c - 解释以下语法,我无法理解

标签 c pointers syntax

   int a=4;
   int *p=&a;

这个语法是对的,但是当我们这样写的时候

   int a;
   int *p;
   *p=&a;

第三行是一个错误,我知道但是,为什么可以在第一行代码中这样做

   int *p=&a;

当我们通过引用将值传递给函数时,我们甚至会这样做...... 谢谢回复

最佳答案

使用int *p=&a;,你是

  • 声明一个变量 (p),它是一个指向 int 的指针
  • a的地址分配给p

等效的代码是

int *p; // declare a pointer variable 'p'
p = &a; // assign the address of a to 'p'

第三行*p=&a;是错误的,因为*p表示地址为p的指针的(整数)值>,该值是一个 int 而不是 int 的地址(即,不是 pointer to an int)

关于c - 解释以下语法,我无法理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18675176/

相关文章:

c - 需要帮助创建和未知数量的命名管道来拆分和排序数据

c - 了解快速平方根反比中的指针语法

c# - 为什么为指针和 ref 生成的 IL 代码相同但签名不同?

c++ - 没有 typedef 的运算符 member_function_pointer_type()?

syntax - 为什么 "||"是 or 的符号?

syntax - Octave 是否有类似于 Matlab 安装和检查代码的语法检查器?

c - 二叉树遍历导致堆栈溢出

c - C语言输入字符串如何加下划线

c - 在GDB中使用命令 'x/20x $esp',栈是怎么工作的?

对函数调用中的单指针和双指针参数感到困惑