私は次のコードが実行されるべきではないことを知っています。cでのサイズ配列の宣言
最初の問題は、ループの内側で 'int i'を宣言し、開始コードではないことです。
次の問題は、配列サイズが実行時に定義されているため、動的割り当てを使用する必要があることです。
私は "セグメント"を得ると予想されました。
私はコマンドでそれを実行します。
gcc -Wall commandLineArgument.c -o ex1
int main(void){
int size=0;
printf("enter number:\n");
scanf("%d",&size);
printf("The size is: %d\n",size);
int arr[size];
for(int i= 0;i<size;i++)
{
arr[i] = 5;
}
for(int i= 0;i<size;i++)
{
printf("%d,",arr[i]);
}
printf("\n");
return 0;}
編集 可変長配列は、更新コードが実行されているか、その後C99 以来、Cでサポートされている場合は?
gcc -Wall -std=c89 commandLineArgument.c -o ex1
int main(void){
int i;
int size=0;
printf("enter number:\n");
scanf("%d",&size);
printf("The size is: %d\n",size);
int arr[size];
printf("The size of arr: %lu\n",sizeof(arr));
for(i= 0;i<size;i++)
{
arr[i] = 5;
}
for(i= 0;i<size;i++)
{
printf("%d,",arr[i]);
}
printf("\n");
return 0;}
[ユーザー定義配列の長さから格納された配列値]の重複の可能性があります(http://stackoverflow.com/questions/18951151/store-array-values-from-user-defined-array-lengths) –
とは何ですか?あなたの質問? – artm
最初の部分については、Cでは許可されますがC++では許可されません。 2番目の部分では、それぞれ定義された 'i'は対応するループのスコープを持ちます。 –