我总是通过尝试得到一个错误。是不是可以要求用户输入一个全局变量/数组的数组大小?-数组必须是全局的
#include <stdio.h>
// global
int size = 1;
char array[size];
int main(){
scanf("%d", &size);
}
OUTPUT: main.c:14:6: error: variable modified ' array '在文件范围14 | char array[size];| ^~~~~
不能修改静态分配的变量数组
你可以使用内存分配函数来创建和修改数组:
#include <stdio.h>
// global
int size = 0;
char *array = NULL;
int main(){
scanf("%d", &size);
array = malloc(size);
if (!array)
{
... handle error.
}
scanf("%d", &size); //ask a new dimension
char *tmp = realloc(array, size); /reallocate array keeping old data
if (!tmp) //reallocation failed
{
free(array); //release memory
... handle error.
}
array = tmp; //reassign new memory to the array pointer
}
如果您想使用VLA,您可以这样做:
#include <stdio.h>
// global
int size = 1;
char *array;
int main(){
scanf("%d", &size);
char a[size];
array = a;
}