1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 「C语言指针」起别名关键字typedef和结构体类型的恩怨情仇

「C语言指针」起别名关键字typedef和结构体类型的恩怨情仇

时间:2024-08-17 10:20:17

相关推荐

「C语言指针」起别名关键字typedef和结构体类型的恩怨情仇

在上一篇文章中,我们简要了解了链表的前导知识——结构体和它的众多小细节。

其中提到了起别名关键字typedef,在那里我们只是简单介绍过:在实际工作中,程序员们普遍使用它,但是并未展开去讲细节。

所以本文决定沿袭上一篇文章的思路,结合一些程序实例,细致地展开讨论typedef和结构体相碰产生的奇妙反应。

首先,typedef是C语言的一个关键字,它的作用是为类型名定义别名。在形式上通常写作:typedef 类型名 别名;

比如一个简单的例子:typedef int A;在这里,我们为整型int 起了别名A,所以在以后需要定义整型变量的时候,除了可以写作int x;还可以写为A x;

类比一下,把这样的思路拓展到结构体里面。对于用户定义的结构体struct student;我们觉得书写不便,很麻烦,所以也可以利用typedef为它起别名:typedef struct student ST;

这样子,我们在后续使用学生这种类型的数据类型的时候,就不用再写那么一长串,转而去使用我们起好的名字ST。比如说明语句ST s1,s2,s[100],*p;

在这样的语句中,我们就定义了结构体变量s1,s2,长度为100的结构体数组s以及结构体指针变量p。

但是这个起别名关键字遇到结构体的时候,往往会有奇妙的反映。比如在下面的例子中,这是一种在结构体类型定义的同时定义这种结构体类型的变量的方式。

在这里,我们对学生这种拥有多种不同类型属性的数据做了类型说明,里面包含了名字、年龄、性别、成绩。而且在类型结束以后,我们声明了三个具有学生属性的变量s1,长度为100的一维数组s以及可以指向学生这种数据类型的指针p。

只要定义变量,系统就会分配存储单元。所以在这一番猛如虎的操作之后,系统自然也根据我定义的变量的类型的数量去分配存储单元。

在我们认识了这种形式之后,可以学习与之相似的另一种形式。在下面的这个例子中,很相似,依然是struct 名字大括号一对,然后大括号结束跟着若干名字。

两个例子很像,只不过在结构体关键字struct之前多了一个起别名关键字typedef。在上一个例子中,我们那么做叫做“在定义结构体体类型的同时定义结构体变量”,那么在加上起别名关键字之后,它就会变成“在定义结构体类型的同时起别名”。

在这里,就表示我们在定义学生这种结构体的同时,为struct student起了别名ST;为学生的结构体指针struct student * 起别名叫做SP。

重点是数组形式,这叫做为长度为100的结构体数组起别名SA,一定要注意区分。

其实只要牢记C语言的起名规范就很清楚了,无论是中括号还是星号都不能作为名字的组成部分,所以起别名只能是SP、SA。

至于说起的是谁的别名,则要把看剩余部分。比如我写一句SA data,只要按图索骥去到上面把对应的SA还原为struct student [100]就很容易理解:这是定义了一个长度为100的结构体数组变量data。

希望读者通过本文对typedef结合结构体的小细节有更进一步的理解,在实际开发中对一些说明语句有符合逻辑的判断,反复研习,获得提高。

本文由C语言那点事原创,欢迎关注,带你一起长知识!

感谢阅读,学习使人强大。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。