gpt4 book ai didi

c - 使用间接运算符获取值

转载 作者:行者123 更新时间:2023-12-02 22:03:01 25 4
gpt4 key购买 nike

如果值存储在一个地址中,那么这个声明做了什么

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 中。

最佳答案

在某一点上你是对的:a 存储一个 int 并位于地址 &a

但是间接只能用在指针上。所以你可以做任何一个

int a = 10;
int *p = &a;
printf("%d", a);
printf("%d", *(&a));
printf("%d", *p);

关于c - 使用间接运算符获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16566732/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com