3

鉴于:

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

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

4

6 回答 6

6

首先,*a = b;将变量的值复制b到指向的位置a

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

于 2012-10-22T18:10:27.730 回答
2
*a = b;

您将值分配给指向的b任何地方。a

a = &b;

在这里,您分配的地址ba

于 2012-10-22T18:11:04.423 回答
1

*a = b分配b给内存中a指向的位置

a = &b将 的地址分配b给变量a

于 2012-10-22T18:11:04.720 回答
1

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

*是能够检索指针指向的值的运算符,您应该将此过程称为间接。

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

于 2012-10-22T18:11:30.507 回答
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 指向的值会更新。

于 2016-06-17T11:49:30.643 回答
0

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

于 2018-05-02T00:36:43.560 回答