码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • C语言从入门到精通第20天(结构体的使用)


    结构体的使用

    • 结构体的定义
    • 结构体变量的定义
    • 结构体中成员变量的初始化
    • 结构体种成员变量的访问
    • 结构体的重新定义

    结构体的定义

    通过前面的学习,我们可以用一个数据类型加变量表示一个属性,但是当表示多个属性时,一个基本数据类型就不能表示了,此时就可以用到结构体来将多个属性进行存储。

    语法:

    struct 结构体名称
    {
    成员变量1;
    成员变量2;
    成员变量3;
    ...
    成员变量n;
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    示例:用结构体表示学生的名字、性别、年龄、电话。

    struct student{
    		char name[32];
    		char sex;
    		int age;
    		char tel[12];
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    注意: 结构体也是一种数据类型,并且在结构体中不能定义函数。

    结构体变量的定义

    可通过以下几种方式进行定义:

    • struct 结构体名称 变量名;
      可通过将结构体和变量名进行联用,相当于定义一个数据类型 变量名,跟我们定义一个属性时是一样的,因为我们说过结构体也是一种数据类型,并且还可以通过以下方式进行定义。
    • struct 结构体名称 *变量名; >>>通过指针进行定义。
    • struct 结构体名称 变量名[长度]; >>>通过数组进行定义。

    扩展:

    除了上述的定于方法,结构体的定义还支持以下这个方式进行定义。语法:

    struct {
    成员变量1;
    成员变量2;
    ...
    成员变量3;
    }结构体变量1,结构体变量2,结构体变量3;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    示例:

    struct {
    int age;
    }A,B,C;
    // 这里的A,B,C是结构体变量
    
    • 1
    • 2
    • 3
    • 4

    这种结构的定义并不是很常用,了解即可。

    结构体中成员变量的初始化

    • 第一种:通过位置进行初始化
    struct student s = {
    "lisi",
    "男"
    18,
    "12345678910"
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    这种初始化方法在进行初始化时,他的初始化值类型必须和定义结构体变量的定义顺序一样。

    • 第二种:通过变量名前面加句点符号进行初始化
    struct student s = {
    .name = "lisi",
    .sex = "男",
    .age = 18,
    .tel = "12345678910";
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    结构体种成员变量的访问

    • 通过句点符号进行访问,这里的结构体变量必须是普通变量或者数组。
      s.age、s.sex、s.name、s.tel

    • 通过->进行访问,这里的结构体变量时指针变量
      struct student *p = &s1;这里的s1是一个完成初始化的普通结构体,可通过以下方式进行操作:
      1)下标法:p[i].成员变量
      2)指针法:(*(p+1)).成员变量
      3)指向操作符

    结构体的重新定义

    使用typedef关键字对结构体进行重新定义,语法:

    typedef struct student{
    成员变量1;
    成员变量2;
    成员变量3;
    ...
    成员变量n;
    }新类型1,*新类型2;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    这里可以通过 新类型1 变量名1 或者 新类型2 指针变量名进行定义。

  • 相关阅读:
    角谷猜想:键盘输入一个整数,输出角谷猜想验证过程
    JaCoCo增量覆盖率的基本实现原理
    众佰诚:抖音店铺开网店前期需要投入多少
    如何进行并发编程和线程同步?
    英伟达DeepStream学习笔记46——kafka修改默认日志存储路径\ 修改日志分块大小\修改日志自动删除时间
    北理工嵩天Python语言程序设计笔记(4 基本数据类型)
    web前端期末大作业 基于HTML+CSS+JavaScript程序员个人博客模板(web学生作业源码)
    第六十二章 符号概览
    【华为机试真题 JAVA】比赛评分-100
    基于YOLOv5、YOLOv8的火灾检测(超实用毕业设计项目)
  • 原文地址:https://blog.csdn.net/m0_67021058/article/details/130898202
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号