📝前言:
在实际编程过程中,我们可能会希望把一些关联的数据存放在一起,这样方便我们使用。但是这些数据的类型有时候并不一致,例如一个学生的信息:有名字(字符串),有年龄(整数),性别(字符)······这时候,我们就可以使用自定义类型——结构体类型,将这些类型不一样的关联数据放在一个结构体类型里面。
这篇文章我们来讲讲结构体类型:
1,结构体的定义
2,结构体变量的创建与初始化
3,结构体成员的引用
🎬个人简介:努力学习ing
📋个人专栏:C语言入门基础
🎀CSDN主页 愚润求学
🌄每日鸡汤:未来是怎么来的?未来不是等来的!
文章目录
- 结构体类型
- 一,结构体类型的定义(声明)
- 1,一般结构体定义
- 2,组合型结构体定义
- 二,结构体变量的创建与初始化
- 1,变量的创建(定义)
- (1)先定义结构体类型,在创建结构体变量
- (2)定义结构体类型,同时创建结构体变量
- (3)通过定义无名结构体类型来定义结构体变量
- 2,变量的初始化
- (1)按照结构体顺序初始化
- (2)按照指定的顺序初始化
- 三,结构体成员的引用
结构体类型
一,结构体类型的定义(声明)
1,一般结构体定义
C语言中结构体类型的定义形式: struct 结构体名 { 成员项表列 }; //在定义结构体类型的时候,成员不需要初始化;当我们创建了变量时,才需要对变量成员初始化
例如我们要定义一个【有名字(字符串),有年龄(整数),性别(字符)】的结构体类型,名字叫stu:
定义形式如下👇🏻
struct stu { char name[20]; int age; char sex; }
2,组合型结构体定义
比如我们要在上面stu结构体的基础上补充一个出生日期(出生日期还要包括:年,月,日)
这个时候,我们就可以多定义一个能够记录出生日期的date结构体类型,然后再在定义学生结构体类型的时候,引用这个date结构体
具体定义形式如下👇🏻
struct date { int year; int month; int day; }; struct stu { char name[20]; int age; char sex; struct date birthday; };
注意:
在定义组合型的结构体类型时,一定要遵守先定义后使用的原则。
例如:定义上面的stu结构体时,成员birthday是一个结构体变量,那我们就要保证birthday这个结构体变量的结构体类型在之前已经先定义过了(在这里也就是date已经先定义了)
二,结构体变量的创建与初始化
1,变量的创建(定义)
(1)先定义结构体类型,在创建结构体变量
struct stu /*定义学生结构体类型*/ { char name[20]; /*姓名*/ int age; /*年龄*/ char sex; /*性别*/ }; struct stu s1,s2; /*定义结构体变量*/
利用这种定义形式,可以在程序的任何地方,在先定义后使用的原则下,定义属于改结构体类型的变量
(2)定义结构体类型,同时创建结构体变量
struct stu /*定义学生结构体类型*/ { char name[20]; /*姓名*/ int age; /*年龄*/ char sex; /*性别*/ }s1,s2; /*同时定义结构体变量*/
将变量直接定义在结构体类型的后面,采用这样的定义方式,在书写上比较紧凑。但对要多处定义结构体变量不方便
(3)通过定义无名结构体类型来定义结构体变量
struct /*无结构体名*/ { char name[20]; int age; char sex; }s1,s2; /*同时定义结构体变量*/
但是,由于该定义方式无法记录该结构体的类型,所以,这种定义形式除了直接定义变量外,不能再定义该结构体的其他变量。(这样的定义,使程序的扩展性受到很大限制,所以建议少用这种方式定义结构体变量)
2,变量的初始化
struct stu { char name[20]; int age; char sex; //我们用B表示男,用G表示女 };
假如我们要创建两个上面这种结构体类型的变量,并初始化:
(1)按照结构体顺序初始化
struct stu s1 = {"zhangsan",20,'B'}; struct stu s2 = {"wangwu",18,'G'};
(2)按照指定的顺序初始化
其实也就是用到了对结构体成员的引用
struct stu s1 = {.age = 20, .name = "zhangsan", .sex = 'B'}; struct stu s2 = {.age = 18, .name = "wangwu", .sex = 'G'};
当然,在定义结构体类型的同时,创建的结构体变量,也可以同时初始化
struct stu { char name[20]; int age; char sex; }s1 = {"zhangsan",20,'B'};
三,结构体成员的引用
对结构体成员的引用我们需要使用到运算符“.”
使用格式:
结构体类型变量名.成员名
如:s1.age
每使用一次.运算符,其实就是拨开了一层。
赋值时,我们需要找到最内层的(能赋值的)成员
例如👇🏻
#include
struct date { int year; int month; int day; }; struct stu { char name[20]; int age; char sex; struct date birthday; }; int main() { struct stu s1 = { "zhangsan",20,'B',{2005,1,1} }; printf("%d\n", s1.age); printf("%d\n", s1.birthday.day); } 这个程序里的结构体类型stu是内包含一个结构体成员birthday的,所以当我们要引用birthday里面的成员时,我们就需要再用一次.运算符:s1.birthday.day
运行结果:
🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!
猜你喜欢
- 10天前(a级景区评定机构)全国A级旅游景区创建与提升培训班在敦煌市举办
- 10天前(万豪酒店 珠海)万豪酒店品牌启航珠海金湾,续写大湾区拓展新篇
- 10天前(三亚太阳湾柏悦度假酒店)三亚太阳湾柏悦酒店携手ROSEONLY诺誓缔造浪漫七夕
- 10天前(兵团猛进秦剧团持续开展“戏曲进校园”活动)兵团猛进秦剧团持续开展“戏曲进校园”活动
- 10天前(罗马尼亚的匈牙利族自治)江苏赴匈牙利、罗马尼亚开展文旅交流推广活动
- 10天前(马尔代夫华尔道夫酒店多少钱)Chef Zhao就任马尔代夫伊挞富士岛华尔道夫酒店Li Long中餐厅新主厨
- 10天前(殷建祥简历)全国十大牛商解码:殷建祥如何用178天技术突围打造星空梦星空房
- 10天前(携程租车加盟合作)携程租车加盟优势全解析:开启旅游出行市场新篇章
- 10天前(冬日生活还没安排?上抖音一键打包北方花式过冬精彩)冬日生活还没安排?上抖音一键打包北方花式过冬精彩
- 10天前(第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
网友评论
- 搜索
- 最新文章
- (2020广州车展哈弗)你的猛龙 独一无二 哈弗猛龙广州车展闪耀登场
- (哈弗新能源suv2019款)智能科技颠覆出行体验 哈弗重塑新能源越野SUV价值认知
- (2021款全新哈弗h5自动四驱报价)新哈弗H5再赴保障之旅,无惧冰雪护航哈弗全民电四驱挑战赛
- (海南航空现况怎样)用一场直播找到市场扩张新渠道,海南航空做对了什么?
- (visa jcb 日本)优惠面面俱到 JCB信用卡邀您畅玩日本冰雪季
- (第三届“堡里有年味·回村过大年”民俗花灯会活动)第三届“堡里有年味·回村过大年”民俗花灯会活动
- (展示非遗魅力 长安启源助力铜梁龙舞出征)展示非遗魅力 长安启源助力铜梁龙舞出征
- (阿斯塔纳航空公司)阿斯塔纳航空机队飞机数量增至50架
- (北京香港航班动态查询)香港快运航空北京大兴新航线今日首航
- (我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉)我在港航“呵护”飞机 每一次安全着陆就是最好的荣誉
- 热门文章