我通过一个名为size的变量动态传递数组大小,它在c中工作正常但在c ++中没有.请告诉我原因,提前致谢.
#include <iostream>
#include <stdlib.h>
using namespace std;
int size;
int main(int argc, char *argv[])
{
int i ;
int *a[size];
cout<<"Enter size";
cin >> size;
for(i =0; i < size ;i++)
{
cout<<"Enter value:" ;
cin>>a[i] ;
}
for(i=0 ; i < size; i++)
{
cout<<a[i]<< " ";
}
system("PAUSE");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我已经通过适当的I/O更改执行了相同的程序,它已正确执行.
另外,在数组声明时,请帮助我理解编译器在这种情况下的行为.
小智 5
请告诉我原因
原因是C++没有可变长度数组.也许你正在寻找std::vector<int>(可能)或new int(不太可能).
另外,在数组声明时,请帮助我理解编译器在这种情况下的行为.
就像它在任何其他情况下的行为一样:它解析源文本并输出语义对应于源代码的机器代码.只是可变长度数组的大小不是硬编码为常量,而是存储在寄存器或堆栈中(如某种"变量")和大小计算(特别是指针算法) )再次执行存储值.