C语言 数据结构 结构体 LinkList

C语言结构体

结构体的定义

结构体是c编程中一种用户可自定义的数据类型,它允许你存储不同的数据类型的数据项。

为了定义结构,必须使用struct语句。struct语句定义了一个包含多个成员的新的数据类型。

struct tag{
    Elemtype name1;
    Elemtype name2;
}variable-name;

其中tag为结构体标签,Elemtype代表数据类型,比如说int,float,char等,name是变量名,variable-name代表这个结构体的变量名称。

定义结构体

定义结构体有很多方式。
第一种

struct Book
{
    char name[20];
    int prices;
}book;

在这里面我们定义了一个结构体struct Book,book为一个结构体变量。类比于int prices,struct Book就相当于int ,而book相当于一个prices。但是这种方式定义结构体变量不够方便。

第二种方式。

struct Book
{
    char name[20];
    int prices;
};

struct Book book1;
struct Book book2;

在这里我们使用结构体struct Book定义了两个结构体变量book1,book2.但是这样使用struct Book还是没有使用int char那么方便,感觉加上一个struct很别扭。

typedef

typedef为C语言的关键字,它可以为数据类型取一个新的名字。比如说int i,j;,我们可以使用typedef int x;,这里我们将int重新命名为x。x i,j;的效果与前面的int i,j;相同。

为了方便使用结构体,我们可以使用typedef struct Book Book;这样,我们再定义一个新的strcut Book结构体类型的变量时,可以直接用Book book1,book2;,这样就看着方便了很多。

数据结构书中的例子

typedef struct Lnode
{
    Elemtype data;
    struct Lnode *next; //c语言支持结构体声明中包含指向自己类型的指针
}Lnode, *LinkList;

在书中的这个例子中,Lnode为这个结构体的一个变量,而LinkList为指向这个结构体的指针类型。相当于 struct Lnode Lnode 和struct Lnode* LinkList。其中Lnode *p中的p和LinkList L中的L是一样,都是指向结构体Lnode的指针变量,这里是为了让LinkList L特意指向头节点,与其他普通的节点分开,才特意多设置一个LinkList指针类型。

访问结构体中的元素

简单来说我们可以使用.来访问结构体中的成员,比如说book1.prices就可以访问prices的值。如果说是Book *book;book = &book1,这里book是一个指向book1的指针变量。指向结构的指针访问结构体成员的方法不同,就要使用->符号。这时访问prices的方法为book->prices

公众号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值