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

ove*_*123 0 c arrays variable-length-array

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

例如,如果我必须提供10个数字作为输入,那么我如何以这样的方式声明一个数组,根据我的输入计数将其大小指定为10?(我不知道是否有可能,但我想知道)

das*_*ght 6

从C99开始,您可以使用可变长度数组.您可以随意声明它们,使用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");
Run Code Online (Sandbox Code Playgroud)

演示.

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