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));

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

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

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

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

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

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