gpt4 book ai didi

c++ - 为什么我在 ‘]’ token 之前得到数组绑定(bind)不是整数常量,即使全局声明了大小?

转载 作者:行者123 更新时间:2023-12-01 14:43:06 26 4
gpt4 key购买 nike

我正在尝试拓扑排序,但我在声明数组时遇到了错误。我附上了我遇到错误的部分。
如果我用值 6 替换访问数组中的 n ,那么算法工作正常。
我不明白为什么会这样?
这是我遇到错误的代码:
Code On Ideone

#include<iostream>
#include<vector>
using namespace std;

int n=6;
int visited[n]={0};
int main()
{
cout<<visited[0];
}

最佳答案

在您的代码中有两件事

 int visited[n]={0};
  • 这里 visitedVLA ,即 not supported by default as per C++ standard .
  • VLAs cannot be initialized by any form of initialization syntax .由于 VLA 的维度应该在运行时确定,因此作为编译时操作的(元素的)初始化不能发生。

  • 但是,按照 C++ 中常量表达式的定义,您可以执行类似的操作
     const int n=6;
    int visited[n]={0}; //not a VLA anymore

    关于c++ - 为什么我在 ‘]’ token 之前得到数组绑定(bind)不是整数常量,即使全局声明了大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61114707/

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