gpt4 book ai didi

c++ - 取消引用和引用类示例

转载 作者:搜寻专家 更新时间:2023-10-31 00:50:57 26 4
gpt4 key购买 nike

我有两个变量:x 和 x_ptr

假设我最初有以下内容:

Addr    Data    Variable

0x300 7 x
0x104 x_ptr

下面的结果是什么:*x_ptr = &x;

据我了解,引用运算符&给出运算符后面的变量的地址;取消引用运算符 *给出存储在运算符后面的变量中的内存位置的值。

因此,&x应该给 0x300 和 *x_ptr应该给出存储在内存位置 0x300 的值,即 int 7 .

所以我期望*x_ptr = &x;将 x 的内存地址存储到 x_ptr 中存储的内存位置。

但是因为 x_ptr 最初没有存储任何值,它应该会产生错误,不是吗?

但是我的类笔记说这是预期的结果:

Addr    Data    Variable

0x300 7 x
0x104 0x300 x_ptr

我不明白为什么会这样。如果我们想让x_ptr存放x的内存地址,是不是应该这样写:

x_ptr = &x相反?

我查看了多个 stackexchange 答案,但我看不出我哪里出错了。

最佳答案

假设 x 的类型为 int 并且 x_ptr 的类型为 int*,则表达式 *x_ptr = &x 无效。 *x_ptr的类型是int&x的类型是int。这些类型不匹配,因此分配无效。

表达式 x_ptr = &x 是有效的。它将 x_ptr 的值设置为 x 的地址。

关于c++ - 取消引用和引用类示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56503022/

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