2015-09-27 65 views
0

所以,這個我做一個VLA:瞭解聲明數組長度

int main() 
{ 
    const size_t LEN = 200; // as I know it's read-onlyy 
    int array[LEN]; 
} 

所以我enstablished是VLAS沒有在C1以上要求。在C99的今天它們是可選的......對於這個motivaiton ,不建議使用該代碼。

但是,如果我這樣做:

#define MYLEN 100 
int main() 
{ 
    int xar[MYLEN]; 
} 

int main() 
{ 
    int xar[100]; 
    const size_t MYLEN = sizeof(xar)/sizeof(int); 
} 

我想我有:

  • 在第一種情況下,我有一個恆定的變量在編譯的時候,但它更邏輯,沒有輸入。
  • 在第二種情況下,一個類型的變量,(只讀)

但它是一個與定義指令更有效,因爲它是典型的到C language.What你建議使用?

無論如何,VLA可以用在主體內部,但它沒有這個意義。

+0

這是莫名其妙的意見爲主。 –

+1

很難理解你的問題。 –

+0

@PCLuddite你不明白什麼? –

回答

0

發佈的代碼沒有定義VLA,因爲在編譯時總是知道調整大小。

這將是一個VLA的例子:

int myFunction(int size) 
{ 
    int myArray[size]; 
} 
+0

他們爲什麼不是VLA? –

+1

這個答案是錯誤的。這個問題的第一個版本就是VLA。只要'[]'中的表達式取決於一個對象,這就是VLA。這是C標準如何定義它的。 –

+0

只是爲了清楚@JensGustedt先生的說法,'const'變量不是'C'中的編譯時間常量,它被稱爲'const'-qualified。 –