假设:
int **a; // (double pointer)
int *b; // (pointer)
*a=b
和a=&b
之间有什么区别吗?
答案 0 :(得分:6)
第一个,*a = b;
将变量b
的值复制到指向a
的位置。
第二个,a = &b
将b
的地址复制到a
。
答案 1 :(得分:2)
*a = b;
您将b
的值分配给a
所指向的位置。
a = &b;
您要将b
的地址指定给a
答案 2 :(得分:1)
*a = b
将b
分配到内存中a
指向的位置
a = &b
将b
的地址指定给变量a
。
答案 3 :(得分:1)
&
它是获取变量地址
*
是能够检索指针所指向的值的运算符,间接,因为您应该调用此过程。
是的,这两个陈述是不同的。
答案 4 :(得分:0)
我认为这里的问题是两者在实践中的区别是什么。这个例子说明了这一点:
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指向的值会更新。
答案 5 :(得分:0)
* a = b:* a是一个指针变量,它存储另一个变量的地址,即b和 a =& b:a只是一个存储b地址的普通变量,即使它存储b的地址也不会存储依赖于数据类型的完整地址