使用动态n生成1到n之间的数字int

时间:2012-12-27 18:05:00

标签: c

我正在努力使用算法将1和动态变量n之间的数字打印到int。

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

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

但是,由于n是动态的,代码将无法编译。

非常感谢任何帮助 - 提前感谢。

3 个答案:

答案 0 :(得分: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取消分配内存。

答案 1 :(得分: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。

答案 2 :(得分:0)

如果'n'在运行时期间发生变化,那么您可以使用注释中建议的malloc。然后检查是否需要更多空间,然后在需要时自动重新分配更多空间