首页 > 解决方案 > 指向指向输出错误值的数组的指针?

问题描述

我的代码正在输出 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 所以我很困惑。

标签: c++

解决方案


我不确定你的意图是什么number[8]=8,但这是错误的。在名为 的数组中只有 8 个元素number,这试图设置第九个。

之后的一切都将被没收,包括后来类似尝试获取所述元素的地址。

请记住,数组的名称是number,而不是number[8]; 括号是其类型的一部分(即int[8])。

是的,我们不写是令人困惑的int[8] number;。这主要是出于历史原因,尽管这种假设的替代方案会带来其自身的问题


推荐阅读