Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么这个数组是错误的。错误:数组绑定在';]之前不是整数常量';代币_C++_Arrays - Fatal编程技术网

C++ 为什么这个数组是错误的。错误:数组绑定在';]之前不是整数常量';代币

C++ 为什么这个数组是错误的。错误:数组绑定在';]之前不是整数常量';代币,c++,arrays,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; } #包括 使用名称空间std; INTE; int a() { int b=3;

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

#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;
}
#包括
使用名称空间std;
INTE;
int a()
{
int b=3;
返回b;
}
e=a();
int d[e]={12,2,3};
int main()
{

cout诸如
e=a();
之类的赋值不能存在于函数之外

<> >代码> int d[e];也是无效的C++,如<代码> e <代码>需要编译时可计算的常量表达式。< /P> 因此,编译失败了,出现了一个尽管很神秘的错误

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

请尝试以下操作:

#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;
}
#包括
使用名称空间std;
int a(){
int b=3;
返回b;
}
int main(){
INTE;
e=a();
int d[e]={12,2,3};

不能将代码作为文本而不是图像发布。除了错误
d[4]
将产生未定义的行为,因为您正在索引数组的末尾。简短的回答是:您不能。无论如何,我们完全不清楚为什么需要数组大小变量,当您使用3个元素初始化它时,代码都是关于细节的,如果我不介意您问题中的细节,几乎什么都没有了;)您可以使用
std::vector
但是我写int e=a()怎么样?这行不通,因为数组必须在编译时具有已知的大小。这是可行的,因为它是一个常量:#include使用名称空间std;const int maxementos=6;类S{public:void muestra(int v[maxementos]){for(inti=0;i