gpt4 book ai didi

c++ - 指针初始化和分配问题

转载 作者:行者123 更新时间:2023-11-30 02:49:47 31 4
gpt4 key购买 nike

我不明白这个:

编译器可以用

int *p_x=&x;

但不是这个

int *p_x,x;
*p_x=&x;

这让我很困惑。有什么不同?这只是一个初始化约定吗?

最佳答案

token *有两个含义。

在第二个示例中,它是解引用运算符,它获取指针指向的值:

int *p_x,x;
*p_x=&x;

p_x 是指向 int 的指针。

x 是一个 int

&xx的地址(指向int的指针)。

*p_xp_x 指向的值(int)。 * 这里是解引用运算符。

您正在尝试将指针 &x 分配给 int

在第一个例子中int *p_x = &x token *实际上属于类型,也就是int*,一个指向整数。它不是这里的取消引用运算符。因此,分配给 p_x 而不是 *p_x。如果您将该行写为 int* p_x = &x,这会变得更清楚。将 &x 分配给 p_x 没问题,因为它们都是指向 int 的指针/地址类型。

修复第二个示例的最简单方法是将 *p_x = &x 重写为 p_x = &x。然后 &x 再次被分配给指针,而不是指针指向的值。

关于c++ - 指针初始化和分配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20929365/

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