繁体   English   中英

* a = b和a =&b有什么区别?

[英]What is the difference between *a=b and a=&b?

鉴于:

int **a; // (double pointer)
int *b;  //  (pointer)

*a=ba=&b之间有什么区别吗?

第一个*a = b; 复制变量的值b的位置a点。

第二, a = &b复制的地址ba

*a = b;

您正在将b的值分配给a所指向的位置。

a = &b;

在这里,您将b的地址分配给a

*a = b分配b ,其中在存储器中的位置a在指向

a = &b的地址分配b到可变a

&是运算符获取变量的地址

*是能够检索指针所指向的值(即应该调用此过程的间接寻址 )的运算符。

所以是的,这两个陈述是不同的。

我认为这里的问题是实践中两者之间有什么区别。 此示例说明了这一点:

int x = 10;
int *y;
int *z;

y = &x;
*z = x;

printf("x: %d, *y: %d, *z: %d\n", x, *y, *z);

x = 20;

printf("x: %d, *y: %d, *z: %d\n", x, *y, *z);

z指向的值不会更新为新的x值20,而y指向的值会更新。

* a = b:* a是一个指针变量,它存储另一个变量的地址,即b,而a =&b:a只是一个普通变量,它存储b的地址,即使它存储b的地址也不会存储完整的地址。取决于数据类型

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM