c - 在声明过程中初始化指针的值

标签 c pointers

指针中的某些内容让我感到困惑 声明一个指向 int 的指针,然后定义它

int *p, a;
p = &a;
a = 3;

可以改为

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

我对后一种情况感到困惑。 *p 的值不是 p 指向的对象的值(本例中是 a 的值)那么为什么在前一种情况下它是

int *p = &a;

这是a的地址,但不是a的值。难道不是吗

int p = &a

为了说明p是指针,它指向的地址就是对象a的地址

此外,我发现在某些情况下有 (int*) p。和普通的声明有什么不同吗?

最佳答案

声明中的

*

int *p = &a;

不是间接运算符。它只是通知编译器 p 是指针类型。 * 仅当出现在语句中时才充当解引用运算符。这意味着 int *p = &a; 中的 *p 与作为 a 别名的 *p 不同>.

关于c - 在声明过程中初始化指针的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29199718/

相关文章:

c - 在简单程序上使用ftrace,内联汇编__asm __(“leave”)导致段错误

c - 在哪里可以找到使用 struct 在 C 中创建的数据库的一些示例?

c - 基本 C 文件 I/O 程序的指针问题

c++ - 指向 const 数据和 C++ 列表的 const 指针

c - 如何为字符指针赋予字符串值?

c - int 产生接近正确的答案,但 float 只给出 -18.000

c - 无法从 C 文本文件中读取结构

c - 如何在C中滚动到终端底部?

c - 将变量赋值给指针

c++ - 将指针数组传递给函数时遇到问题