typedef和struct

在c语言中定义一个整型变量可以用int来定义,字符型变量可以用char来定义,那如果需要定义同一个类型的集合,那用数组便能解决,数组定义也很方便需要定义什么类型的数组只需要在定义该类型的后面加上[ ]即可,比如定义一个int类型的数组,只需要在int后面加上[ ]即可,比如int型的数组a,可以用int a[ ];char型的数组b则是char b[ ];那如果要定义一个集合,里面不仅要包含int,也要包含char,float的类型变量,仅仅用数组就解决不了了,因为数组是只能定义同一个类型的集合,这时就要用到struct结构体定义了,在struct结构体里可以包含各种类型的变量,不仅基本的数据类型可以,struct结构体里还能继续包含别的struct结构体,所以struct结构体也为我们编程人员带来了便利,那么struct结构体怎么定义和使用呢,我们便来一起探究一下。

其实struct结构体变量的定义和普通变量定义差不多,比如定义一个包含整形int a,字符型char b,浮点型float c的结构体StructName的话,可以参考下面图片

需要注意的是在struct结构体的定义中每个成员需要用分号隔开,尤其要注意最后一个float c后面也要加上分号,在定义的时候不要忘记了!

定义好结构体后,接下来就是使用结构体了,那么如何使用呢,这里要先说一个成员的概念,成员变量就是指结构体里定义的变量,像上图中,变量a,b,c都是StructName的成员变量,当要给这个结构体变量的成员赋值时,我们使用.来赋值

 以上就是struct结构体变量定义和成员变量的赋值,那如果还要继续定义一个和上面这个结构体类型一样的变量StructName2怎么定义呢?答案是还是和上面一样

 细心的读者可以发现像这种每次struct里面包含的变量类型都是一样的结构体,每次定义都要写前面的一大段会非常不方便,那有没有一种方法可以像int一样我也用一个自定义类型就把上面struct结构体里的变量类型和成员定义给省略掉同时也能用自己定义的变量类型定义一个变量通过点引出并赋值呢?答案是有的,那就是typedef。

在c语言中我们可以使用typedef 来对一个结构体进行一个别名的替换,这样像StructName前面那一大堆信息就能只用别名就能表示了。我这样描述可能不太清楚,具体看图

 像上图一样用typedef就能将struct { int a; char b; float c; } 这一大段定义用Struct_t 给替代了,这时当我们还要定义一个这个struct { int a; char b; float c; }类型的结构体变量时就能用Struct_t 来定义了

 这时struct { int a; char b; float c; } StructName2 和 Struct_t  StructName2就是等效的了

当然typedef也还有很多用法,比如

像上面的StructName1就是我们给这个结构体定义的一个名字,而StructName2则是这个结构体的别名,我们可以用这两个名字来代替struct { int a; char b; float c }这个结构体变量类型的定义,num1和num2就是分别用这两个名字定义的变量,需要注意的是用StructName1来定义时,要在前面加上struct,否则会报错,而用StructName2来定义变量时,可以省略,另外更多关于typedef 和struct 结构体变量的定义可以参考下面这个大佬的文章:(46条消息) C语言结构体和无名结构体以及typedef struct加不加结构体名在变量定义方式中的区别_结构体没有结构体名_Matutinal的博客-CSDN博客

里面对于struct 结构体定义和typedef介绍很详细。

这就是我自己在学习struct 和typedef 遇到的一些问题和一些自己的想法,如果文中有错误,还请大家指出来,一起讨论学习。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值