为什么这个数组是错误的。错误:数组绑定在']'标记之前不是整数常量

问题描述 投票:-3回答:2

错误:数组绑定在']'标记之前不是整数常量。如何使变量成为长度。

#include<iostream>
using namespace std;

int e;

int a()
{
  int b=3;
  return b;
}

e=a();

int d[e]={12,2,3};

int main()
{
  cout<<d[4]<<endl;
  return 0;
}
c++ arrays
2个回答
1
投票

e=a();之类的赋值不能存在于函数外部。

int d[e];也不是有效的C ++,因为e需要是一个编译时可评估的常量表达式。

所以编译失败了,尽管有一个神秘的错误。

请注意,由于您尝试访问数组边界之外的元素,因此d[4]的行为将是未定义的。


-2
投票

试试这个:

#include <iostream>
using namespace std;

int a(){
int b = 3;
return b;
}

int main(){
int e;
e = a();
int d[e] = {12,2,3};
cout << d[0] << endl;
return 0;
}

正如你所看到的,向量的大小只有3(记住在c ++中0表示一个位置),所以在这种情况下你只需要打印3个值,d[0],d[1],d[2],记住你不能指定一个值在a之外功能。此外,如果您计划将全局变量分配给数组绑定,则必须保持不变。像这样:const int e = 3;,希望它有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.