2016-05-12 12 views
4
#include <stdio.h> 

int main(void) 
{ 
    int a=17; 
    scanf("%d",&a); 

    int arr[a]; 

    printf("%lu", sizeof(arr)); 
} 

配列 "arr"のメモリはコンパイル時に割り当てる必要がありますが、この場合はユーザ(実行時)から "a"の値をとり、同じサイズを割り当てます配列。どうか明らかにしてください。cの配列のメモリ割り当て

答えて

6

はい、これは可変長配列と呼ばれます。 C99以降はC言語で標準となっています。

いいえ、このようなコードではコンパイル時にメモリを割り当てるべきではありません。もちろん不可能です。

また、タイプsize_tsizeofオペレータによって生成されたもの)の値は、%zuを使用して印刷する必要があります。

関連する問題