如果值存储在地址中,那么这个声明做什么
int a = 10;
它将值存储在 a 或 &a 的地址中。如果它将值存储在 a 的地址中,那么为什么我们不能像这样使用对这个变量的间接寻址:
printf("%d", *a);
如果不是,那么我们怎么能说每个值都有一个唯一的地址,我们可以使用间接运算符访问它们。
编辑:如果我认为间接仅用于指针,那么考虑一下:
int b[10];
b[0] = 4; // Give it some value
现在我们知道 b[0] 是一个标量,可以在任何需要标量值的地方使用。但是在这种情况下,我们可以像这样使用它的间接性:
printf("%d", *b); // print 4
看到我们可以在这个标量变量上使用指针,但不能在没有数组的变量声明上使用,这并不有趣。
在我看来,编译器会自动为变量声明生成一个间接,如下所示:
int a = 4;
所以,间接是不可能的,因为我们在它上面放置了另一个不合法的间接,除非在声明变量的情况下:
int a = 4;
int *b = &a;
int **c = &b;
编辑2:您可以scanf("%d", &a)
将值存储在a的地址中而不是a中作为证明。