男孩紙@~
2021-08-02 16:53
采纳率: 85.7%
浏览 45
已结题

c语言,定义全局指针变量并分配空间时报错。


#include <stdio.h>
#include <stdlib.h>
#define scanf scanf_s

typedef struct Btnode {
    int value;
    char ltag, rtag;
    struct Btnode *lchild, *rchild;
} btnode;

btnode *pre=(btnode *)malloc(sizeof(btnode));

最后一句会报错,请教一下。

  • 好问题 提建议
  • 收藏

4条回答 默认 最新

  • 八云黧 2021-08-02 17:00
    已采纳

    任何函数都不能在全局情况下被调用,所以你不能直接为全局变量通过malloc分配空间
    你可以只声明这个全局变量,然后再main函数第一行用malloc给它赋值

    已采纳该答案
    评论
    解决 1 无用
    打赏 举报
  • 封左 2021-08-02 17:00

    btnode *pre=(btnode *)malloc(sizeof(btnode)*60);
    你这样写试试

    评论
    解决 1 无用
    打赏 举报
  • qzjhjxj 2021-08-02 17:04

    得把主函数补上,供参考:

    #include <stdio.h>
    #include <stdlib.h>
    #define scanf scanf_s
    
    typedef struct Btnode {
        int   value;
        char  ltag, rtag;
        struct Btnode* lchild, * rchild;
    } btnode;
    
    btnode* pre = (btnode*)malloc(sizeof(btnode));
    
    int main()
    {
        return 0;
    }
    
    
    评论
    解决 1 无用
    打赏 举报
  • 封左 2021-08-02 17:15

    搜了一下,C语言的main函数是入口函数,任何函数必须从main开始调用,
    而且全局变量只能定义,定义并使用常量初始化,对全局来说,只能接受常量

    评论
    解决 1 无用
    打赏 举报

相关推荐 更多相似问题