gpt4 book ai didi

C++ 自引用数组?

转载 作者:IT老高 更新时间:2023-10-28 21:56:57 25 4
gpt4 key购买 nike

我不小心通过在数组中的自引用在程序中创建了一个错误。这是一个非常简化的演示程序,概念类似:

#include <iostream>
using namespace std;

int kTest[] = {
kTest[0]
};

int main() {
cout << kTest[0] << endl;
}

我很惊讶我没有收到编译器错误,甚至没有收到有关此代码的警告!就我而言,它最终产生了不可预测的输出。是在访问垃圾内存吗?

我很好奇在什么情况下会有明确定义的输出(如果有的话!)。

编辑:如果 kTeststatic 有区别吗? const 呢?两者都有?

最佳答案

int kTest[] = {
kTest[0]
};

类似于,如果不完全相同的话

int x = x;

如果在函数中本地声明,它将是未定义的行为。

kTest 是一个全局变量时,它似乎定义得很好。见 the other answer了解更多详情。

关于C++ 自引用数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40138325/

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