c++ - 指向指向输出错误值的数组的指针?
问题描述
我的代码正在输出 7339536 的值,这让我发疯了!
当我将数组设置为 8 时,代码给出了 7339536 的输出,但如果我将数组更改为 9 的大小,它会将值正确输出为 8。
#include <iostream>
int main () {
int number[8];
number[8]=8;
int *a;
int **b;
a = &number[8];
b = &a;
std::cout<<**b;
return 0;
}
为什么值是 7335936 而不是 8?当我将数组大小更改为 9 时正确输出 8 所以我很困惑。
解决方案
我不确定你的意图是什么number[8]=8
,但这是错误的。在名为 的数组中只有 8 个元素number
,这试图设置第九个。
之后的一切都将被没收,包括后来类似尝试获取所述元素的地址。
请记住,数组的名称是number
,而不是number[8]
; 括号是其类型的一部分(即int[8]
)。
是的,我们不写是令人困惑的int[8] number;
。这主要是出于历史原因,尽管这种假设的替代方案会带来其自身的问题!
推荐阅读
- angular - Angular 6 http.get subscribe 无需查询 api 即可获得相同的数据
- python - 将字符串转换为带有变量的列表
- javascript - 为什么我的文件阅读器无法从 xmlhttprequest 读取此数据 url
- rust - 如何在 Rust / gtk-rs 中创建一个简单的 Gtk MessageDialog?
- html - 在 scss 中使用 mixin 使用类的名称来赋予特定的颜色
- css - CSS 结束一个关键帧循环动画并让它重新开始动画
- node.js - Slackbot(节点):icon_emoji 功能不起作用
- reactjs - 从表单字段中获取值
- scala - Scala Play 框架期货
- javascript - 是否有可能在 webpack 中有一个真正动态的 import() ?