C语言typedef

最近看数据结构的书,发现自己C语言的语法不是很好,查资料琢磨了一下数据结构中的typedef

typedef关键字在c语言中用来为已有数据类型创建一个新名字

如typedef int DataType;

如在一个结构体数据结构中:

typedef int DataType;

typedef struct snode

{

DataType data;

       struct snode *next;

}LSNode;

c语言学的不好的人也许懵了,我们换个方式一点点的看

typedef struct snode{DataType data;struct snode *next} LSNode;

抽出红色部分:

struct snode

{

DataType data;

struct snode *next

};

这就是一个名字叫snode结构体,结构体其实就是一种数据类型,只不过比int数据类型复杂了些,

现在如果将红色部分替换成int类型,你也许一下子就明白了,LSNode就是int类型的一个新别名

类似的红色部分换回结构体,LSNode就是snode类型结构体的一个别名

我们再来具体看看结构体snode中定义了什么东西:

DataType data;

往上找,你会发现typedef int DataType;这句

所以DataType data;也就相当于int data

再看这句struct snode *next; 

此处next是一个指向snode类型结构体的指针变量,也就是说next中存储snode型变量的内存地址

到这里我们可以理解snode的意思了,把snode看作一个木箱,中间有层隔版,假设左侧存放int型卡片(int型的数据)的数据,

而右侧就存放下一个木箱子的位置(snode类型的一个结构体结点在内存的中的地址)

整个如下的数据抽象其实就是

数据结构链表结点的一个结点逻辑抽象

typedef int DataType;

typedef struct snode

{

DataType data;

       struct snode *next;

}LSNode;

因为普通的c语言中并没有类的定义,因此学过java的会觉得结构体很像类,当然可以这么类比去理解,其实差别很大。
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值