将地址 int "i" 分配给指针 "p" 时 "p = &i" 和 "*p = i" 之间有什么区别吗

Bil*_*lly 2 c pointers memory-address

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

int i = 42;
int *p;

p = &i;    // & is address of sign
*p = i;    // * is dereference sign
Run Code Online (Sandbox Code Playgroud)

"p = &i" 和 "*p = i" 之间有什么区别吗??使用这两个表达式时“p”会具有不同的特征吗???

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

Cod*_*ice 9

将地址 int “i” 分配给指针 “p” 时 “p = &i” 和 “*p = i” 之间有什么区别吗

是的,有很大的不同。仅p = &i表示“将地址分配ip”。

另一方面*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);
Run Code Online (Sandbox Code Playgroud)