如何根据输入数量定义数组大小?

How to define array size based upon number of inputs?

据我所知,(我是 c 的初学者)您可以定义数组的大小,前提是用户知道用户将提供多少输入。但是,我如何根据输入的数量定义数组的大小?

例如,如果我必须给出 10 个数字作为输入,那么我如何声明一个数组,使其大小根据我的输入计数分配为 10? (我不知道这是否可能,但我想知道)

从 C99 开始,您可以使用 variable-length 数组。您可以随时声明它们,使用 size_t 变量作为其大小。

size_t n;
printf("How many numbers would you like to enter?\n");
scanf("%zu", &n);
int array[n];
for (size_t i = 0 ; i != n ; i++) {
    printf("Enter number %zu: ", i+1);
    scanf("%d", &array[i]);
}
printf("You entered: ");
for (size_t i = 0 ; i != n ; i++) {
    printf("%d ", array[i]);
}
printf("\n");

Demo.

注意: 这种方法适用于相对较小的阵列。如果您预期使用更大的阵列,请不要使用这种方法,因为它可能导致未定义的行为(溢出自动存储​​区域)。相反,使用 mallocfree.

我认为你应该复习一下 C 中的指针概念。 you can go through these videos

虽然为一维数组动态分配内存,但指针非常方便。

你当然可以利用variable-length arrays (introduced in C99), but be aware, in the latest standard C11, this had been made an optional feature. Latest compilers are not bound to support this feature in future. If you are interested, check

最好的方法是使用指针和动态内存分配函数,例如 malloc() 和 family。

示例:(pseudo-code)

int * p = NULL;
int input = -1;
scanf("%d", &input);
p = malloc(input * sizeof*p);
if (p) { .....

在这里,您可以使用 input 变量值来控制分配大小。

P.S- 指针当然不是数组,但我相信,在大多数情况下,这会达到目的。