为什么可变长度数组在这个c ++程序中编译?

时间:2012-02-09 05:58:25

标签: c++ arrays

据说数组是在编译时分配的,然后大小必须是const并且在编译时可用。
但以下示例也有效,为什么?

#include <iostream>                                  
#include <vector>                                                 
using namespace::std;                                             
int main()                                                       
{                                                    
    vector<int> ivec;                                               
    int k;                                                  
    while(cin>>k)                                              
        ivec.push_back(k);                                     
    int iarr[ivec.size()];                                           
    for (size_t k=0;k<ivec.size();k++)                                 
    {                                                             
        iarr[k]=ivec[k];                                               
        cout<<iarr[k]<<endl;                                   
    }                                                            
    return 0;                                                    
}   

1 个答案:

答案 0 :(得分:7)

使用-pedantic编译代码。
大多数编制者通过 variable length arrays 支持 compiler extensions
代码由于编译器扩展而起作用,但是正如您所指出的那样,代码是非标准的,因此不可移植。