• 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 指针变量名进行定义。

  • 相关阅读:
    redis安装部署和常用命令
    大数据运维实战第十七课 日志收集、分析过滤工具 Logstash应用实战
    自动化设备制造行业常见管理难题及解决方案
    自动化喷涂生产线控制方法概述
    C语言 ,不用string.h的函数,实现A+B A-B的字符串处理功能。
    Aandroid studio编码最实用的快捷键
    load 镜像及 疑难杂症(一)
    合并kubeconfig配置文件
    9.3 Ret2Libc 实战之利用VirtualProtect
    前端入门(二)Vue2到Vue3
  • 原文地址:https://blog.csdn.net/m0_67021058/article/details/130898202