C语言——结构体类型(一)【结构体定义,创建,初始化和引用】

📝前言:
在实际编程过程中,我们可能会希望把一些关联的数据存放在一起,这样方便我们使用。但是这些数据的类型有时候并不一致,例如一个学生的信息:有名字(字符串),有年龄(整数),性别(字符)······这时候,我们就可以使用自定义类型——结构体类型将这些类型不一样的关联数据放在一个结构体类型里面
这篇文章我们来讲讲结构体类型
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<stdio.h>
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

运行结果:
在这里插入图片描述


🌈我的分享也就到此结束啦🌈
要是我的分享也能对你的学习起到帮助,那简直是太酷啦!
若有不足,还请大家多多指正,我们一起学习交流!
📢公主,王子:点赞👍→收藏⭐→关注🔍
感谢大家的观看和支持!祝大家都能得偿所愿,天天开心!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/302037.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

各大厂急招鸿蒙开发员,争抢鸿蒙工程师

去年9月&#xff0c;余承东宣布鸿蒙原生应用全面启动&#xff0c;华为开始了全面抛弃安卓的进程。 多家互联网公司也发布了鸿蒙OS的App开发工程师的岗位&#xff0c;开启了抢人大战。 有的企业开出了近百万的年薪招聘鸿蒙OS工程师&#xff0c;而华为甚至为鸿蒙OS资深架构师开…

python 各级目录文件读取

目录结构 import pytestdef test_01():# 同级文件with open(1.txt, r, encodingutf-8) as file:content file.read()print(content)def test_02():# 同级目录的下的文件with open(rupfile/2.txt, r, encodingutf-8) as file:content file.read()print(content)def test_03():…

大数据StarRocks(四) :常用命令

这次主要介绍生产工作中使用Starrocks时的常用命令 4.1 连接StarRocks 4.1.1 Linux命令行连接 [roothadoop1011 fe]# yum install mysql -y [roothadoop1011 fe]# mysql -h hadoop101 -uroot -P9030 -p4.1.2 Windows客户端 DBeaver 连接 4.2 常用命令 4.2.1 查看状态 1. 查…

低代码快速构建管理系统的实践思路

目录 一、前言 二、创建数据表 三、添加数据表属性 四、配置功能 五、数据筛选 六、数据集显示&功能发布 一、前言 很多时候&#xff0c;市场上的管理软件鱼龙混杂&#xff0c;找一些外包团队在实际应用中效果并不理想&#xff0c;项目中存在的问题也比较棘手。后面了…

视频如何制作微信表情?仅需一招在线制作

Gif动画表情包是当下一种非常流行的图片展示格式&#xff0c;能够通过gif格式的图片来调节聊天氛围或是传递信息&#xff0c;非常有趣。而gif动图现在也被各行各业的商家用作宣传使用&#xff0c;很吸引大众的目光。 那么&#xff0c;这种非常吸引人的gif动图是怎么制作的呢&a…

民营企业合规管理建设,重点有哪些?

民营企业在当前经济发展中占据着重要地位&#xff0c;但随之而来的是更多的法律法规和监管要求。因此&#xff0c;民营企业合规建设成为保障企业合法运营、稳定发展的关键。 首先&#xff0c;民营企业应重视法律遵从。确保企业各项经营活动符合国家法律法规和相关政策要求&…

rhel8安装

1. 2. 3. 4. 5. 6.默认 7.默认 8. 9.默认 10. 11. 12. 13.默认 14.默认 15.添加镜像 16.双击后&#xff0c;通过上下键选择第一个 &#xff08;第二个是测试镜像并安装&#xff0c;就是比较慢&#xff0c;建议选择第一个&#xff09; 17. 18. 19.让他自动分区就行了 20.开始安…

抖店入驻资质是什么?

我是电商珠珠 抖店的入驻资质是什么&#xff1f;这是很多新手关心的问题。 今天&#xff0c;我就来详细的跟大家讲一下。 一、营业执照 对于新手来说&#xff0c;准备一张个体的营业执照即可。营业执照可以去当地工商局免费办理&#xff0c;也可以去找代办。 代办的话需要…

《实战AI大模型》从入门到精通

文章目录 编辑推荐内容简介作者简介前言/序言入手传送门&#xff1a;参加抽奖 人工智能领域资深专家尤洋老师倾力打造&#xff0c;获得了李开复、周鸿祎、颜水成三位大咖鼎力推荐&#xff0c;一经上市就登上了京东“计算机与互联网”图书排行榜Top1的宝座。 编辑推荐 《实战AI…

10 分钟搞定 1 个门店,「沉浸式巡检」让巡查整改更身临其境

门店巡检起着确保品牌运营的标准性和规范性的作用&#xff0c;同时也是为了发现门店存在的问题和不足&#xff0c;为后续运营优化提供数据支撑。 不过&#xff0c;在实际的巡检过程中&#xff0c;效率问题却总是悬而未决。要让巡检真正发挥它的价值&#xff0c;就需要设置系统、…

编程模拟 NAT 网络地址转换(2024)

1.题目描述 参考计算机网络教材 188 页内容&#xff0c;模拟 NAT 路由器的工作过程&#xff0c;主要有 2 个步骤的工作&#xff1a;1、将收到的来自 内网报文中的私有源 IP 地址转换为 NAT 的外部合法 IP 地址&#xff0c;同时将传输层源端口号转换为 NAT 路 由器分配的端口号…

java数据结构与算法刷题-----LeetCode64. 最小路径和

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 很多人觉得动态规划很难&#xff0c;但它就是固定套路而已。其实动态规划只…

ECharts 图表简单示例,中国地图

目录 ECharts官网链接: [ECharts](https://echarts.apache.org/zh/index.html)在项目中引入 Apache ECharts柱状图折线图饼图仪表盘中国地图完整示例代码 ECharts官网链接: ECharts 在项目中引入 Apache ECharts <!DOCTYPE html> <html><head><meta char…

Python编程+copilot+代码补全+提高效率

Python编程copilot代码补全提高效率 copilot是由Github和OpenAI合作开发的一款AI编程工具&#xff0c;它可以根据自然语言或部分代码&#xff0c;自动给出合适的代码补全建议。copilot支持多种编程语言&#xff0c;包括Python&#xff0c;也可以在Pycharm等主流IDE中使用。本资…

stm32cube keil5第二次下载程序不成功

1.第一次下载成功&#xff0c;第二次需要按重置键下载然后松开能下载成功。是因为之前stm32cube默认设置了nodebug模式。修改读写模式第二次就可以下载。 2.keil5每次不用按钮重置按钮刷新程序 keil5设置。

2024第九届上海国际智慧工地展览会-官 网

2024第九届上海国际智慧工地展览会 时间&#xff1a;2024年10月30-11月1日 地点&#xff1a;上海世博展览馆 主办单位&#xff1a;联合国人居署 上海市住房和城乡建设管理委员会 协办单位&#xff1a;上海世界城市日事务协调中心 智慧工地是一种应用信息化、智能化技术的施…

6类典型场景的无线AP选型和部署方案

你们好&#xff0c;我的网工朋友。 前段时间刚给你们来了篇解决无线频繁断网的技术文&#xff0c;《解决无线频繁断网&#xff0c;这个办法值得收藏&#xff01;》。 不少朋友私聊&#xff0c;说想再聊聊无线AP的选型和部署方案&#xff0c;这不就安排上了&#xff1f; 无线…

构建免费的Dokan和WooCommerce构建线上课程市场在线销售数字课程

我们知道创建良好的学习说明和材料很困难。但当涉及到销售时&#xff0c;就变得更加困难。如果您无法出售您的课程&#xff0c;那么没有什么比这更令人沮丧的了。 幸运的是&#xff0c;如果您使用的是 WordPress 网站&#xff0c;那么您可以非常轻松且免费地完成此操作。借助L…

苹果IOS如何支持微信小程序分享

各位同学们好&#xff01;我是咕噜铁蛋&#xff01;&#xff0c;我们经常需要与读者分享有关移动应用的使用方法和技巧。微信小程序是一种便捷的应用形式&#xff0c;可以在微信内部直接使用&#xff0c;而无需下载和安装。本文铁蛋讲详细介绍iOS苹果支持微信小程序类型分享的使…

张驰咨询:精益生产咨询如何塑造行业未来?

驻厂精益生产咨询是一种咨询服务&#xff0c;顾问直接在客户的生产现场进行长期驻点&#xff0c;通过现场观察、分析和指导&#xff0c;帮助企业实施精益生产的方法和工具&#xff0c;旨在改善生产效率&#xff0c;减少浪费&#xff0c;提升产品质量&#xff0c;并降低成本。这…