请解释以下c语言代码

来源:百度知道 编辑:UC知道 时间:2024/06/07 09:58:09
typedef struct lnode{
int data;
struct lnode *next;
}lnode,*linklist;
用typedef定义新名为何定义了两个,还有一个是指针*linklist是什么意思?如何解释此段代码?它都用了哪些语法结构和技巧?并请详细解释一下typedef的用法。

typedef就是一个现有的结构体取个新的名字,有几个都可以啊,之间只需用“,”隔开就可以了。
这个结构体不就是一个链表结构吗。而一个结构体的对象的名字其实就是标识了他的起始位置。
对于结构体
typedef struct lnode{
int data;
struct lnode *next;
}lnode,*linklist;
在C++程序中,构建lnode 对象,如下:lnode node;
就给他分配了存储空间,就可以直接使用:如给data赋值:node.data=1;
而对于linklist ,在构建linklist node1;时,并未给他分配存储空间,还需手动分配存储空间才能使用node1对象,
node1=new lnode[2 *sizeof(int)];
node1->data=1;

就是定义了类型名,相当于一个绰号

typedef struct lnode
{
int data;
struct lnode *next;
}lnode,*linklist;

lnode a; -->相当于
struct lnode
{
int data;
struct lnode *next;
}a;

linklist a;-->相当于
struct lnode
{
int data;
struct lnode *next;
}*a;

语法:typedef type newtype;
比如:
typede unsigned char BYTE;
typdef unsigned long DWORD;

定义了两个意思都是一样的!lnode 和*linklist都能代表struct lnode这个结构。区别是由于*linklist前面多了个*所以linklist是指向struct lnode的指针。可以直接使用linklist指针