gpt4 book ai didi

c++ - 指针操作? C++

转载 作者:行者123 更新时间:2023-11-28 02:34:32 25 4
gpt4 key购买 nike

有人可以告诉我第 2 行在这里做什么吗?我检查它是否只是将 a 的地址分配给 b,但事实并非如此。

int a = 5, *b;
b = (int*) a;

最佳答案

阅读一些关于类型转换和指针的优秀 C++ 编程书籍。

所以在第二行,a 包含 5。您正在使用 (int*)a 将它转换为一个指针(指向 int)。这给出了一些包含地址 5 的(无效的)指针。

在一些独立的 C++ 运行时环境——也许是一些廉价的微 Controller ——地址 5 可能是有意义的和合法的(但即使是 5 也不太可能)。但通常不在托管的 C++ 环境中(例如在 Linux、Windows、MacOSX、Hurd 等上编译并为之编译)

一旦您取消引用该指针(例如使用 int c= *b;),您将得到 undefined behavior , 通常是一些 segmentation fault

您可能想要 b = &a; 正如 technusm1 评论的那样

关于c++ - 指针操作? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27959263/

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