最近看数据结构的书,发现自己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的会觉得结构体很像类,当然可以这么类比去理解,其实差别很大。