【问题标题】:How can I fix this? - global variable with size x我怎样才能解决这个问题? - 大小为 x 的全局变量
【发布时间】:2022-06-10 17:34:58
【问题描述】:

尝试这个总是会出错。是不是可以要求用户输入一个全局变量/数组的arraysize? - 数组必须是全局的。

#include <stdio.h>

// global 

int size = 1;
char array[size];

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

输出:main.c:14:6:错误:在文件范围内可变地修改了“数组” 14 |字符数组[大小]; | ^~~~~

【问题讨论】:

  • nope.. 数组的大小必须是一个常量,并且编译器在编译时知道.. 使用另一个 dataContainer
  • 不要仅仅为了它而使用全局变量。将其移入 main() 将解决您的所有问题,并且也将是更好的设计。

标签: arrays c global-variables


【解决方案1】:

您不能修改静态分配的变量数组。

但是,您可以使用内存分配函数来创建和修改数组:

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

【讨论】:

    猜你喜欢
    • 2013-10-24
    • 1970-01-01
    • 2019-04-10
    • 1970-01-01
    • 2012-03-16
    • 1970-01-01
    • 2020-11-28
    • 2013-05-19
    • 1970-01-01
    相关资源
    最近更新 更多