flyingfoxlee
flyingfoxlee

Reputation: 1794

Why a variable length array compiles in this c++ program?

It is said that arrays are allocated at compile time, then the size must be const and available at compile time.
But the following example also works, Why?

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

Upvotes: 1

Views: 88

Answers (1)

Alok Save
Alok Save

Reputation: 206518

Compile your code with -pedantic.
Most compilers support variable length arrays through compiler extensions.
The code works due to the compiler extensions, However as you noted the code is non standard conforming and hence non portable.

Upvotes: 7

Related Questions