关于c语言的struct问题

typedef struct node{
int value;
int freq;

}node;

这段中struct表示要定义一个结构类对面?第一个node和第二个分别什么意思?什么情况下可以省略?

三部分:
第一部分:typedef,类型宏替换。用途就是给一个类型定义一个别名,从此以后用本来的类型名还是用类型别名都可以
第二部分:struct node{ int value; int freq;} 声明一个结构体类型,struct说明是结构体,结构体类型名是node,那么该类型的类型名全称就是struct node。大括号里面是成员声明,这个好理解不用多说
第三部分:node,类型别名,也就是struct node这个类型的别名

还有,c中没有类的概念,c++才有

这个说完了,剩下的就是回顾变量定义的格式了:
类型名 变量名列表 //变量定义的格式

从上面三部分的拆解可以看出,struct node和node都可以用作类型名,那么你写哪个都可以了
struct node a;
node a;
这两种写法都是一样的作用

你问的省略,估计是struct node这里的node,
结构体隶属于构造类型,是构造出来的,下属有无数种类型。
你要是只写一个struct a,struct里面有无数种,谁也不知道你说的是哪种,根本无解,所以,必须指明是结构体中的且已声明的某种类型名才可以。

但是,有一种特例,就是每次都声明一种无名的结构体,也就是
struct
{ int value;
int freq;
}
这种格式。因为没有指明该结构体的类型名,所以以后定义该种类型的变量时,必须每次都指明该类型,也就是:
struct
{ int value;
int freq;
} a,b; //a、b、这次都是变量了
我想你问的是这个
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-16
这里
struct node{
int value;
int freq;

}
是一个整体,意思是定义一个结构体,

typedef 结构体 node
又是一个声明,意思是将这个结构体简写成node。
第一个node可以省略,省略后你只能通过简写来调用这个结构体。
第二个node与typedef共存
第2个回答  2015-07-16

这里有两个知识点:

    结构体

一般我们声明结构体是

struct node{
。。。
};

这样我们就可以用这个结构体去定义变量了

struct node aaa;

这个类似于

int  bbb;

struct node于int相似,都是一种数据类型。

2.重定义

typedef   X    XXX

是将X表示为XXX。

这里:

typedef struct node{
}node;

就是将struct node表示为node。

同样,你也可以

typedef   int   iinttt;
这样,int bbb;就可以写成iinttt   bbb;(不过这样更麻烦了)

同理:

struct node  a;就可以写成node a;了

本回答被网友采纳
第3个回答  2015-07-16
第一个node 是命名 第二个node 是变量
第4个回答  2019-09-30
z就代表前面的complex_struct,他俩可以看成是一样的!相当于给他换了一个名字!
相似回答