C 如何删除错误:应为';:'''''';}';或'__属性';在'之前=';代币

C 如何删除错误:应为';:'''''';}';或'__属性';在'之前=';代币,c,data-structures,C,Data Structures,#包括 #包括 结构树{ int数据; 结构树*左,*右; }; 结构队列{ 结构树**nodeQ=(结构树**)malloc(sizeof(结构树*); 内锋; 内部后部; }; 在C中,不能像对待nodeQ成员那样初始化内联结构成员 创建结构时,需要初始化成员 所以你需要做一些类似的事情 struct queue q = { malloc(sizeof(struct tree *)), 0, 0 }; 或 请注意,I.您遇到的问题是在定义结构时初始化它。 当使用_struct{…}的结构名

#包括
#包括
结构树{
int数据;
结构树*左,*右;
};
结构队列{
结构树**nodeQ=(结构树**)malloc(sizeof(结构树*);
内锋;
内部后部;
};

在C中,不能像对待
nodeQ
成员那样初始化内联结构成员

创建结构时,需要初始化成员

所以你需要做一些类似的事情

struct queue q = { malloc(sizeof(struct tree *)), 0, 0 };


请注意,I.

您遇到的问题是在定义结构时初始化它。 当使用_struct{…}的结构名_时;您正在定义一个数据类型。因此,你不能给它一个特别的价值

struct tree{

     int data;        
     struct tree *left,*right;    

};       


struct queue{

    struct tree ** nodeQ;  
    int front;    
    int rear;    

};    
这应该作为一个定义,还记得使用缩进和注释您的代码,因为这将产生一个更容易理解的程序,并且您将在两周后真正理解它

另外,我认为您的代码中实际上有一个错误,nodeQ不应该是普通指针而不是双指针吗?如果您尝试取消引用(访问指针引用的内容)两次,将出现seg错误

下面是如何初始化nodeQ的内容,假设它是一个指针,在一个函数中,我这次将在main函数中初始化它

#include <stdio.h>
#include <stdlib.h>    




struct tree{

    int data;        
    struct tree *left,*right;    

};       


struct queue{

    struct tree * nodeQ;
    int front;    
    int rear;    

}; 



int main(void)
{
    struct queue my_queue;
    if(my_queue.nodeQ=malloc(sizeof(struct tree)))
        fprintf(stderr, "Unable to allocate memory for my_queue nodeQ\n");


    return 0;
} 
#包括
#包括
结构树{
int数据;
结构树*左,*右;
};       
结构队列{
结构树*nodeQ;
内锋;
内部后部;
}; 
内部主(空)
{
结构队列我的队列;
if(my_queue.nodeQ=malloc(sizeof(struct tree)))
fprintf(stderr,“无法为我的队列节点分配内存”);
返回0;
} 

首先要理解,在C语言中不能这样做-->
结构树**nodeQ
struct tree{

     int data;        
     struct tree *left,*right;    

};       


struct queue{

    struct tree ** nodeQ;  
    int front;    
    int rear;    

};    
#include <stdio.h>
#include <stdlib.h>    




struct tree{

    int data;        
    struct tree *left,*right;    

};       


struct queue{

    struct tree * nodeQ;
    int front;    
    int rear;    

}; 



int main(void)
{
    struct queue my_queue;
    if(my_queue.nodeQ=malloc(sizeof(struct tree)))
        fprintf(stderr, "Unable to allocate memory for my_queue nodeQ\n");


    return 0;
}