如何根据输入数量定义数组大小?
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");
注意: 这种方法适用于相对较小的阵列。如果您预期使用更大的阵列,请不要使用这种方法,因为它可能导致未定义的行为(溢出自动存储区域)。相反,使用 malloc
和 free
.
我认为你应该复习一下 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- 指针当然不是数组,但我相信,在大多数情况下,这会达到目的。
据我所知,(我是 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");
注意: 这种方法适用于相对较小的阵列。如果您预期使用更大的阵列,请不要使用这种方法,因为它可能导致未定义的行为(溢出自动存储区域)。相反,使用 malloc
和 free
.
我认为你应该复习一下 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- 指针当然不是数组,但我相信,在大多数情况下,这会达到目的。