我该如何解决这个问题?-全局变量,大小为x.



我总是通过尝试得到一个错误。是不是可以要求用户输入一个全局变量/数组的数组大小?-数组必须是全局的

#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;
}

最新更新