• C语言结构体变量定义、引用、初始化


    一、结构体概述

    我们学过的数据类型有:int ,float ,double ,char ,int a[10],float b[100];  有时候我们需要把这些整合起来一起使用。

    例如:001 张三  男  18  xx栋xx单元xx号

       002 李四  男  18  xx栋xx单元xx号

    结构体:结构体也是一种数据类型,被叫做结构体类型。结构体,说白了就是把多种不同类型的数据捏到一起,目的是 能够表达更丰富的信息,有点类似于很多高级语言中的“记录”;

    1. struct student //定义一个结构体类型
    2. {
    3. int num; //学号
    4. char name[100]; //姓名
    5. int sex; //性别:0 女 , 1 男
    6. int age; //年龄
    7. char address[100]; //地址
    8. };
    结构体类型 定义的一般形式:
    struct  结构体名
    {
           //成员列表(可以多个)
    }; //千万 不要忘记加这个分号 ;
    二、定义结构体类型变量的方法
    例如:定义一个整型变量    int a;
    要定义一个结构体类型变量,我们把 结构体名 看成一个类型名 就可以了,定义结构体类型有 三种方法
    (1) struct   结构体名  变量名列表
    例如:
    struct student s1,s2;
    (2) 定义结构体的时候就定义结构体类型变量,变量位置位于 } 之后, ;之前,多个变量之间用 , 隔开。
        struct 结构体名 
       {
          //成员列表
        } 变量名列表;
    例如:
      struct student  //定义一个结构体类型
       {
        int num;          //学号
        char name[100];   //姓名
        int sex;          //性别:0 女   , 1  男
        int age;          //年龄
        char address[100];   //地址
    } s1,s2;
    (3) 直接定义结构类型变量,连结构体名都省略了
    一般形式:
    struct
    {
      成员列表;
    }变量名列表;
    说明
    A.使用结构体,我们一般要 先定义一个 结构体类型然后定义 某些变量为该类型的变量,这是分两步走的;
    B.结构体内部 还可以嵌套结构体
    C.结构体内 成员名,可以与程序中的变量名相同,彼此之间互不影响。
    三、结构体类型变量的引用
    (1) 不能结构体变量作为 一个整体进行引用,比如s1,s2都是结构体变量,但不能拿过来直接用,只能对结构体变量中的 各个成员分别引用;引用的方式为:
    结构体变量名 . 成员名      [这个 .  叫做结构成员运算符,该运算符优先级 非常高  ,与()平级,所以可以把                                                 s1.num 看作是一个整体]
    例如:s1.num=1001;  //将1001赋值给s1变量中的成员num
    (2) 如果成员本身 又属于一个结构体类型,则要用若干个成员运算符,一级一级的找到最低一级成员,只能对最低级成员进行赋值或者存取。
    s1.birthday.month=12;
    s1.birthday.day=30;
    s1.birthday.year=2018;
    (3) 成员变量,就当成普通变量,可以像普通变量一样进行各种运算
    s2.age=s2.age;    //赋值
    int agesum=s2.age+s2.age;   //求年龄和
    s1.age++;      //年龄自加1,因为   的优先级最高,所以s1.age是个整体。
    //s1++;  这样是不可以的这样写的。也不可以这样写:s1.brithday++;
    (4) 因为成员变量我们也是当成普通变量的,所以它们 也是有地址的
    int *p=&s1.num;
    pritntf("%d\n",*p);    //结果是:1001
    四、结构体变量的初始化
    定义结构体类型的时候赋值
    struct student s3={1003,"王五",1,16,"3栋5楼",10,14,2001};    //定义结构体类型的时候赋值
  • 相关阅读:
    【毕业设计】基于单片机的心率血氧健康监测手表 - 物联网 嵌入式
    谈谈Selenium中浏览器驱动的日志
    匈利亚算法的实现
    基于开源 PolarDB-X 打造中正智能身份认证业务数据基座
    2023开学礼《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书海口经济学院图书馆
    B. Suffix Operations
    Clickhouse同步mysql(基于物化引擎)
    Sql 中常用日期转换Convert(Datetime)
    自动化RPA大纲
    ABAP 效率优化 FOR ALL ENTRIES IN和JOIN ITAB对比
  • 原文地址:https://blog.csdn.net/qq_48516121/article/details/126891554