gpt4 book ai didi

c - 初始化指向动态内存的全局指针时出错

转载 作者:行者123 更新时间:2023-12-02 09:06:11 27 4
gpt4 key购买 nike

我正在编写一个程序,其中涉及 malloc 来创建全局数组。我尝试过这个(当然是在 main() 之外):

int *arr=malloc(5*sizeof(int));

在GCC编译器中,出现以下错误:

main.c:4:10: error: initializer element is not constant
int *arr=(int *)malloc(5*sizeof(int));
^

我在Dev-C++上尝试过这个,但没有这样的错误中断编译。该错误是什么意思?为什么它是 GCC 特有的?

最佳答案

在文件范围内声明的变量必须具有作为编译时常量的初始值设定项。函数调用被视为可执行代码,不能存在于函数之外。

处理此问题的最佳方法是将指针初始化为 NULL 并在 main 函数中执行 malloc

您没有看到 DEV-C++ 错误的原因是它是一个 C++ 编译器,并且 C++ 允许通过函数调用来初始化文件范围变量。

关于c - 初始化指向动态内存的全局指针时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58188400/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com