关于结构体指针定义的问题?

为什么stuct N * next对,而stuck Node * next错

第1个回答  2020-05-20
首先,C和C++中定义结构体是有区别的
//c中定义结构体
struct Node
{
};
//c中创建结构体类型变量
struct Node node; //前面有个struct
//c++中定义结构体
struct Node{
};
//c++中声明创建结构体类型变量 (不需要前缀struct)
Node node;
当然,C中为了简写结构体,常常使用typedef 来起别名。你的第二个例子中,已经给结构体起了一个别名Node,他等效于struct 匿名名称; 所以stuck Node * next相当于
struct struct 匿名名称 *next ;多了一个struct所以报错。本回答被网友采纳
第2个回答  2020-05-20
typedef是给类型进行重命名
struct N{};这个是定义了一个类型,叫做struct N。
在C语言中,需要使用struct N作为类型名进行定义,看上去比较臃肿,所以出现了一个新的方案,就是用typedef struct N Node; 相当于Node等价于struct N,以后定义类型的时候,只用Node就行了。
相似回答