typedef用法?

来源:百度知道 编辑:UC知道 时间:2024/05/25 16:33:18
typedef struct book
{

char book_num[4];
char book_code[4];
struct student *next;
struct book *lchild, *rchild;
} BSTBook,*BSTree
typedef是定义一个新的类型吧,在上面这段程序里,typedef定义的新类型是什么啊,结构体我也不太会,请详细讲解一下,谢谢。
例如book是什么,是类型名?还是?
BSTBook,*BSTree是变量吧,它是两个不同的变量是吗,访问时是不是这样: BSTBook.book_num[4]
*BSTree.book_num[4].请具体说一下,谢谢。

typedef就是给一个类型起个别名
如你提到的结构体struct book,如果不typedef,那用该类结构体时,就要写struct book,也就是说struct book是类型名,就好像int、char样;写了typedef之后,用的时候直接写BSTBook就可以了,BSTBook就是类型名
*BSTree是指向BSTBook类型数据的指针
访问的时候,应写成 *BSTree.book_num或BSTree->book_num...

typedef struct book
{
char book_num[4];
char book_code[4];
struct student *next;
struct book *lchild, *rchild;
} BSTBook,*BSTree

这里定义了2个类型:
BSTBook 表示book类型的结构体
BSTree 表示book类型的结构指针

使用方法:
BSTBook stBook;
BSTree pTree;

stBook.book_num[0] = 0;
pTree = &stBook;

typedef看这个单词就知道它是变量类型定义,也就是它定义的是变量的类型而不是变量。
这么给你说,比如
typedef int In;
那么这之后再出现In时,编译器会把In当成和int一个意思。
你可以把typedef和define比较,会更容易理解。
你的例子中,BSTBook表示结构体struct book类型,它本身不是变量,而是结构体变量类型。同理,*BSTree是指针类型,这个指针类型可以定义指向结构体book的变量。

typedef struct book
{........
}Book book[N],*pBook;

注意与你的代码的区别
Book book1;

book1.next=