数组大小在c和c ++中动态声明

Mah*_*esh -3 c c++

我通过一个名为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(不太可能).

另外,在数组声明时,请帮助我理解编译器在这种情况下的行为.

就像它在任何其他情况下的行为一样:它解析源文本并输出语义对应于源代码的机器代码.只是可变长度数组的大小不是硬编码为常量,而是存储在寄存器或堆栈中(如某种"变量")和大小计算(特别是指针算法) )再次执行存储值.

  • @Mahesh不,为什么会这样?如果你在'size`未初始化的时候写`int arr [size]`,那么你将拥有一个相当随机大小的数组.即使你在**数组的声明之后给`size`分配了一些东西,这也不会改变. (2认同)