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

时间:2017-05-04 12:30:08

标签: c++ arrays

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

#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;
}

2 个答案:

答案 0 :(得分:1)

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

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

因此编译失败了,虽然有一个神秘的错误。

请注意,由于您尝试访问数组范围之外的元素,d[4]的行为将未定义

答案 1 :(得分:-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],请记住,您可以不要在函数之外分配值。同样,如果您打算将全局变量分配给数组绑定,则它必须是常量。像这样:const int e = 3;,希望对您有所帮助。