1 から動的変数 n までの数値を int に出力するアルゴリズムに苦労しています。
int n = // dynamic value
int i = 0;
int output[n];
for(i = 0; i < n; i++) {
output[i] = i;
}
ただし、n は動的であるため、コードはコンパイルされません。
どんな助けでも大歓迎です-事前に感謝します。
1 から動的変数 n までの数値を int に出力するアルゴリズムに苦労しています。
int n = // dynamic value
int i = 0;
int output[n];
for(i = 0; i < n; i++) {
output[i] = i;
}
ただし、n は動的であるため、コードはコンパイルされません。
どんな助けでも大歓迎です-事前に感謝します。
次のように、バッファまたは動的サイズの配列を割り当てる必要がありますmalloc
。
int n = // whatever
int i = 0;
int* output = NULL;
// Allocate the buffer
output = malloc(n * sizeof(int));
if (!output) {
fprintf(stderr, "Failed to allocate.\n");
exit(1);
}
// Do the work with the array
for(i = 0; i < n; i++) {
output[i] = i;
}
// Finished with the array
free(output);
output
は、割り当てたバッファーの先頭へのポインターであり、の配列として扱うことができますn
ints
。
配列の使用が終了したら、メモリの割り当てを解除する必要がありますfree
。
実行時に「n」が変化する場合は、コメントで提案されているように malloc を使用できます。次に、より多くのスペースが必要かどうかを確認し、必要に応じてより多くのスペースを自動的に再割り当てします
これはうまくいくはずです:
int n = // whatever
int i = 0;
int* output = (int*)malloc(sizeof(int)*n);
for(i = 0; i < n; i++) {
output[i] = i;
}
free(output);
必要なくなったら忘れずに。
編集:Cにしました。