1

1 から動的変数 n までの数値を int に出力するアルゴリズムに苦労しています。

int n = // dynamic value
int i = 0;
int output[n];

for(i = 0; i < n; i++) {
    output[i] = i;
}

ただし、n は動的であるため、コードはコンパイルされません。

どんな助けでも大歓迎です-事前に感謝します。

4

3 に答える 3

10

次のように、バッファまたは動的サイズの配列を割り当てる必要があります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

于 2012-12-27T18:06:54.267 に答える
0

実行時に「n」が変化する場合は、コメントで提案されているように malloc を使用できます。次に、より多くのスペースが必要かどうかを確認し、必要に応じてより多くのスペースを自動的に再割り当てします

于 2012-12-27T19:26:23.023 に答える
0

これはうまくいくはずです:

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にしました。

于 2012-12-27T18:07:47.107 に答える