C语言学习day12

一.结构体
    1.基本数据类型:
        整形
        浮点型
        字符型
        布尔型
        枚举型
    2.构造数据类型
        数组
        结构体
        共用体
    3.结构体数据类型定义
        struct 结构体类型名
        {
            数据类型1 变量1
            数据类型2 变量2
            ...
        };
        嵌套定义
            struct A
            {
                struct A a;
                int a;
            }//无法实现
            struct A
            {
                struct A *a;
            }//可以实现
        typedef 类型名 类型别名
            typedef unsigned int size_t
    4.结构体数据类型变量
        定义:
            struct 结构体类型名 变量名
            struct student stu0,stu1;
            struct student
            {
                ...
            }stu2,stu3;
        初始化:
            全部初始化
                stu_t stu0 = {"zhangsan",'m',21,59.9};
                datetime_dt dt0 = {{2023,11,8},{14,23,30}};
            局部初始化
                stu_t stu1 = {.sex = 'f',.age = 22};
        访问:
            可以通过结构体变量名加成员类型//stu0.name   stu0.age
            可以通过指针以结构体变量名加成员类型//(&stu0)->name
            嵌套定义访问时//dt0.d.year     dt0.t.hour
            遇到指针类型成员变量用->,遇到普通成员变量用.
    5.结构体内存对齐原则
        结构体的成员变量分配在内存中的起始地址一定是自身基本数据类型所占字节的整数倍
        32位数据线每次开辟空间时总会开辟4字节空间大小,因此char型,short型所占空间会向int型转变
        64位系统下,如果存在double型,将以8字节对齐
        结构体大小最终是结构体中最大数据变量所占字节的整数倍
        #pragma pack()//括号内数字将使数据类型以多少字节对齐
    6.结构体类型函数传参

补充:

        如果函数定义的参数为void fun(struct student *stu)时,引用结构体内部的变量需要用到指针传递,即stu0->name,stu0->sex......,并且在调用函数时,需要传递一个地址名。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值