2011-05-10 47 views
7
#include <iostream> 
using namespace std; 

int main(){ 
    int n=10; 
    int a[n]; 

    for (int i=0; i<n; i++) { 
     a[i]=i+1; 
     cout<<a[i]<<endl; 
} 
    return 0; 
} 

在書上說的Xcode4工作正常的Mac在C++書籍中,數組綁定必須是常量表達式,但爲什麼下面的代碼有效?

下,它應該是錯的,爲什麼呢?

如此混亂〜

+0

要以符合標準的方式執行此操作,您可以使用alloca() – 2011-05-10 09:49:27

+2

'alloca()'也不是標準C++。標準方法實際上是'std :: vector a(n)' – MSalters 2013-03-15 12:01:27

+0

它「工作」並不意味着它沒有錯誤:) 'char * ptr =「lol」; * ptr ='a';'有時「起作用」。 – 2013-04-05 12:50:29

回答

6

這一種稱爲C99特徵VLA其中一些編譯器還允許在C++中。它在堆棧上分配,就像int a[10]一樣。

4

這是允許VLA(可變長度數組)的C99功能。編號爲g++ -pedantic,我相信不會編譯。

+1

您可能還需要'-std = C++ 98'或'-ansi'。 – 2011-05-10 09:10:36

相關問題