第八节 复合类型

结构体:

关键字:struct

struct student{
        short age;
        char name[20];
        int *ptr;
        };

上面这条语句是一条结构体类型的声明语句

1,结构体内部元素的访问可以通过两种形式:
    A、结构体变量的名字.具体元素的名字
    B、结构体指针->具体元素的名字

2,结构体的初始化
    A、根据数组的套路来初始化数据
    B、指定元素的名字来进行初始化

3,结构体作为参数在传入函数的时候,最好用地址,这样的效率更高

4,结构体的大小:
    由于系统是32位(所以内存的分析是最大以32位为分析的基数),
    根据结构里面的最大元素的大小决定基数为多少(如果超过32位则按照32位分析):
    根据基数作为分析内存的规划,如果一片内存所剩的量不够下一个变量使用,
    则丢弃后面的内存,重新申请一个新的

5,总结;除开“相同类型的结构体变量可以相互整体赋值”外,其他情况下,
   不能整体引用,只能对各个成员分别引用;

6,总结: ->只用于结构体指针访问成员; .点只用于结构体名访问成员;

7,传递地址,使用结构体指针接收,用于访问不做修改;const限制修改,

8,结构体作为参数传递;不能成功修改实参,只能访问;(形参结构体是实参的副本,修改副本不影响实参)

9,结构体作为参数,修改结构体并且返回类型也为结构体;达到修改的目的;

10,传递地址,使用结构体指针接收,用于修改;不使用const限制修改,

11,在结构体中使用字符数组和字符指针来存储字符串的区别
    字符数组:字符串的存储在结构体内部的;
    结构体总分配总的字节的内存给相应的字符串

    字符指针:这里的字符串是存储在编译器认为存储字符串常量的任何地方,
    这个结构体中存放的只有地址而已,只分配8分字节;
    结构体不为字符串分配任何内存存储空间,
    因此访问时是一个未赋值的地址,这时候在输入的时候存在了一个潜在的危险;
    因此我们最好是使用字符数组来存储字符串

    (相关结构体知识网址:)
    https://blog.youkuaiyun.com/zw1996/article/details/53844585)

共用体/联合体

关键字:union

1,跟结构体的语法结构一模一样
2,共用体里面元素共享同一片内存
3,共用体的大小由里面占内存最大的那个元素所决定    

跟结构体不一样的地方在于内存共享

共用体的应用场景:
    互斥的数据,为了节省内存,但是又要有通用性的情境下,我们选择定义共用体

枚举:又称枚举常量

关键字:enum
    1,枚举里面的元素的值得初始化是按照默认+1的原则赋值的,
       某人首元素从0开始计算
    2,枚举里面的元素都是整型数据
    3,枚举定义完之后的数据都是常量,不可变
    4,枚举类型用来将一类事物统一在一起代表的时候引用
    5,枚举类型说到底就是个整型

typedef:

专门用来自定义一种变量的名字

语法格式:
    typdef   普通变量的定义语句
    这个时候,后面的这个普通变量的名字就变成对应的这个变量的类型的代号

引用的使用注意的地方
    1,在typedef定义的类型后面一般要加   _t

    2,引用的时候的语法你只需要按照普通变量的声明语句方式就可以
    3,typedef定义的类型不能和其他类型组合定义
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值