[英]What is the difference between *a=b and a=&b?
鉴于:
int **a; // (double pointer)
int *b; // (pointer)
*a=b
和a=&b
之间有什么区别吗?
第一个*a = b;
复制变量的值b
的位置a
点。
第二, a = &b
复制的地址b
到a
。
*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.