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

时间:2012-10-22 18:07:59

标签: c pointers

假设:

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

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

6 个答案:

答案 0 :(得分:6)

第一个,*a = b;将变量b的值复制到指向a的位置。

第二个,a = &bb的地址复制到a

答案 1 :(得分:2)

*a = b;

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

a = &b;

您要将b的地址指定给a

答案 2 :(得分:1)

*a = bb分配到内存中a指向的位置

a = &bb的地址指定给变量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的地址也不会存储依赖于数据类型的完整地址