gpt4 book ai didi

c++ - 指向指针的指针和运算符的地址如何工作?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:17:36 25 4
gpt4 key购买 nike

拿这段代码:

int a;
int *pointer = &a;

int **b = &(&(*pointer));

上面是否将b设置为pointer的地址?

我之所以这么问是因为*pointer给出了a的值,而它的引用就是a的地址。这只是作为 a 的地址处理,还是也作为 pointer 处理。

这有意义吗?我可以这样做吗:

&(*pointer) = a;

最佳答案

没有。在 C 语言中,您只能获得指向存储区域的指针(这意味着变量、数组元素或另一个指针;他们称这些为“左值”),而不是任何表达式。您无法获得指向未定义存储区域的表达式的指针(如加法或函数调用的结果)。然而,应该注意的是,C++ 将这些规则与引用混为一谈,但为了清楚起见,我将其省略。

指针并不神奇:归根结底,它们只是整数。因此,当你得到一个指针的指针时,就像你得到一个整数的指针一样。它没有更多的影响。

例如,如果您在代码中获得指向a 的指针,您只是将此地址复制到另一个变量中。没有什么可以阻止您更改上述变量:

int a;
int* p = &a;
p = NULL;

这样做,您a 将保持不变。关于a,你所能改变的就是它的值。它的地址是不可变的。其他任何东西都意味着 &a = NULL(或任何其他指针值)可以工作,但事实并非如此。

关于c++ - 指向指针的指针和运算符的地址如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3868827/

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