C/C++结构体简单介绍
什么是结构体
C++的结构体处于很尴尬的地方,因为他是为了与c保持兼容而保留的(CSDN的一条评论)
不过对于算法比赛当中,我们只要记得,结构体比类要快很多就行。
但是,我学的是C呀~~~(不是)
如何使用结构体
引入
我们用一本书为例,书有 页数, 出版商, 作者,我们就可以这样定义
struct book{
int page;
string publicer;
string author;
};
恭喜你,你已经会引入结构体了。
使用
int main(){
struct book book1;
}
简化使用代码
这里是我们可以看到,每当我们想要使用Struct的时候,我们必须使用
struct book
这可还行,为了简化代码,我们可以这样写
typedef struct book book;
这里的意思是,在预处理(编译的第一步),我们首先会把book,直接替换成struct book。也就是说我们可以直接用book来定义我们的变量
int main(){
book book1;
}
再简化,我们甚至可以直接这样简化
typedef struct{
int page;
string publicer;
string author;
} book
这段代码的含义就是
struct book{
int page;
string publicer;
string author;
};
typedef struct book book;
特别提醒
这代码能看就行,在C++里面是不会有任何问题的,但是在C里面就可能出现bug
struct LNode
{
int data;
struct LNode* next;
};
typedef struct LNode LNode;
typedef LNode* LinkList;
typedef struct
{
int data;
struct LNode* next;
}LNode,*LinkList;
这里第三行会出现LNode没有定义的问题。C只能简化成
typedef struct LNode
{
int data;
struct LNode* next;
}LNode,*LinkList;