c - 将地址 int "p = &i"分配给指针 "*p = i"时, "i"和 "p"之间是否有任何差异

标签 c pointers memory-address

我在我的C编程书上找到了这段代码:

int i = 42;
int *p;

p = &i;    // & is address of sign
*p = i;    // * is dereference sign

“p = &i”和“*p = i”有区别吗?? “p”在使用这两个表达时会有不同的特征吗???

编辑:因为这段代码只是试图解释指针的概念,它是不可运行的……所以这两个赋值的顺序在这种情况下不相关……抱歉让事情变得模糊……

最佳答案

Is there any differences between “p = &i” and “*p = i” while assigning the address int “i” to a pointer “p”

是的,有很大的不同。只有p = &i表示“将i的地址赋值给p”。

另一方面,*p = i 表示“将 i 的值分配给存储在 p 中的地址处的值”。你可以通过一个简单的例子看到结果:

int i = 42;
int* p;

p = &i;
printf("%d", i);
*p = 5;
printf("%d", i);

int j = 3;
printf("%d %d", i, j);
p = &j;
*p = i;
printf("%d %d", i, j);

关于c - 将地址 int "p = &i"分配给指针 "*p = i"时, "i"和 "p"之间是否有任何差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59293317/

相关文章:

c++ - 为什么要从这个析构函数和赋值运算符中的指针中减去?

c - 如何知道程序中各个变量、指针、函数、函数返回地址等的地址?

assembly - x86-64 规范地址?

c - 实用分段核心转储

python - 将指针值从 python 传递给 C 函数

c - typedef 的指针类型错误

c++ - 他们最擅长什么——C 和 C++

c - 从 C 中另一个函数的指针获取输入

c - 如何清除保存内存位置起始位置的指针变量,该变量需要从起始位置清除 20 个字节的数据

linux -/proc/self/maps 使用 fwrite 坏地址错误将内存写入文件