2017-12-18 76 views
0

在讓我們C它提到,「分配一個數組時,我們必須提交在編寫程序時的數組大小」。但是在下面的代碼中,我在執行時給出了大小,但仍然在運行,所以這是正確的?它是強制性的,在分配時,我們應該提到的數組大小,而編寫程序

代碼:

所有的
#include <stdio.h> 
void main(){ 


{ 
    int n,i; 
    printf("give the size of the array \n"); 
    scanf("%d",&n); 
    int a[n]; 
    printf ("give array elements\n"); 
    for (i=0;i<n;i++) 
    { 
     scanf("%d",&a[i]); 
    } 
}  
+1

這裏說:https://stackoverflow.com/questions/562303/the-definitive-c-book-guide-and-list,你正在使用的書「是一個可怕的過時的書,教Turbo C和有很多過時的,誤導性的和完全不正確的材料「。 – babon

回答

0

首先,我認爲你的意思聲明而不是分配。

也就是說,這叫做variable length array或VLA。這是一個C99以上的增加。

引用C11,章§6.7.6.2/ P4

如果尺寸是整數常量表達式 和元素類型具有已知的恆定大小,陣列類型不是可變長度 陣列型;否則,數組類型是可變長度數組類型。

相關問題