我该怎么解决这个问题?- 大小为x [duplicate]的全局变量

2vuwiymt  于 2023-08-03  发布在  其他
关注(0)|答案(2)|浏览(79)

此问题在此处已有答案

Variably modified array at file scope in C(4个答案)
4天前关闭。
我总是得到一个错误通过尝试这个。是否可以要求用户输入全局变量/数组的arraysize?- 数组必须是全局的。

#include <stdio.h>

// global 

int size = 1;
char array[size];

int main(){
    scanf("%d", &size);
}

字符串
输出:main.c:14:6:错误:可变修改'数组'在文件范围14| char array[size];|哦~

zynd9foi

zynd9foi1#

不能修改静态分配的变量数组。
但是,您可以使用内存分配函数来创建和修改数组:

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

字符串

axzmvihb

axzmvihb2#

如果你想使用VLA,你可以这样做:

#include <stdio.h>

// global 

int size = 1;
char *array;

int main(){
    scanf("%d", &size);
    char a[size];
    array = a;
}

字符串

相关问题