#include "stdio.h"
#include "stdlib.h"
#include "string.h"
struct library
{
char num[10];
char name[20];
char writer[20];
char classify[20];
};
typedef struct node
{
struct library data;
struct node *next;
}Node,*Link;
求解释typedef struct node结构体的作用
答案:5 悬赏:0 手机版
解决时间 2021-03-20 07:59
- 提问者网友:人傍凄凉立暮秋
- 2021-03-19 11:02
最佳答案
- 五星知识达人网友:深街酒徒
- 2020-01-19 09:55
typedef struct node //定义一个结构,名为node
{
struct library data; //成员之一data为 library结构类型
struct node *next; //成员之一next为指向 library结构类型的指针
}Node,*Link; //node的别名叫Node,指针别名叫Link
这样定义完之后,就可以这么用了:
Node anode;
Link pnode;
{
struct library data; //成员之一data为 library结构类型
struct node *next; //成员之一next为指向 library结构类型的指针
}Node,*Link; //node的别名叫Node,指针别名叫Link
这样定义完之后,就可以这么用了:
Node anode;
Link pnode;
全部回答
- 1楼网友:妄饮晩冬酒
- 2020-06-19 20:13
没有使用typedef的声明时使用结构体名,使用了的,就要使用后面定义的名字了,
- 2楼网友:夜风逐马
- 2020-10-21 23:23
首先你要明白typedef的作用。typedef是C语言里的一个关键字,用来给一个类型别名(化名)。比如
typedef int size_t;
typedef struct node Node;
第一个例子给内置类型int一个别名size_t。第二个例子给struct node一个别名Node。这里你看到了typedef的两个常用情况。第一个例子用以给一个通用类型更具化的别名,这往往会增加你的代码的可读性。第二个例子用以简化代码的繁复性,每当你需要声明一个struct node变量的时候,你可以直接用Node。
你的例子
typedef struct node {
struct library data;
struct node *next;
} Node, * Link;
只是一个比较紧凑的写法,等价于如下写法:
typedef struct node Node, * Link;
struct node {
struct library data;
Link next; // Node * next;
}
注意我把typedef置于结构体node的定义之前(这是一个C成语)。它的好处是C编译器会先看见别名定义,所以在结构体node的定义里面我就已经可以用其别名Link或者Node来声明变量或指针了。你可以把typedef置于结构体node的定义之后,写作
struct node {
struct library data;
struct node * next;
}
typedef struct node Node, * Link;
但这样你就不能在node的定义里面用定义完才给的别名Node或Link了。所以你看到里面next的声明用的是struct node *。
最后,
typedef struct node Node, * Link;
仍然是一个紧凑的写法,等价于:
typedef struct node Node;
typedef struct node * Link;
第一条语句给struct node(结构体node本身)一个别名Node。第二条语句给struct node *(指向node结构体的指针)一个别名Link。
- 3楼网友:等灯
- 2020-10-07 05:54
在C语言中,结构体变量定义的时候是这样的:
struct 结构体名 变量名;
但是如果把struct 结构体名 定义成一个新类型的话,就可以不用写struct
所以
本来要
struct node* p;
的现在可以写成
Node* p
甚至
Link p (连*都不要了,因为typedef struct node* Link;
- 4楼网友:渊鱼
- 2020-08-28 12:57
1、一般C语言编译器环境,定义结构体需要:
typedef struct node ,但很多C/C++编译器,可以直接写:
struct node
2、结构体,可以存放不同的数据类型,诸如象数据库中的记录,网络游戏中通讯的数据结构等,采用结构体就很方便
3、更多交流参考我空间文章。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯