结构体 共用体 枚举 位运算

结构体:1.用来描述复杂数据的一种数据类型2.是一种构造类型(用户自定义类型)

                定义语法:

                形式1:struct 结构体名{};先定义类型,然后再利用类型定义变量。

                形式2 :定义类型的同时,定义变量。还可以直接初始化变量。

                               struct demo{}name;

                形式3:定义类型的同时,定义变量,可以省略类型名。

                                struct {}name; 如果结构体类型只使用一次,可以这样定义。

                结构体类型的大小:

        定义变量的语法: struct 结构体名 变量名;

        结构体的初始化:看每个成员变量是什么类型,根据这个类型初始化。初始化顺序按照定义的顺序依次初始化。

        结构体变量的引用:

                结构体数据引用时,一般引用到具体的成员数据。引用到成员利用结构体成员运算符  . 

        使用:结构体变量名.成员名。

                在利用结构体指针来引用结构体变量时,需要用到 -> 运算符。表示通过指针指向结构体成员变量。

        注意:结构体类型可以用来作为变量,指针,数组,函数的数据类型。当作为数组类型时,表示每一个数组元素都是结构体类型。这时候可以用s[i].sno的方式来访问到单个结构体类型中数据。当结构体类型作为指针的数据类型时,表示该指针的基类型为结构体类型,当利用结构体指针来指向结构体数组时。可以利用 (s+i)->sno 这样的方式来访问到数组中第 i 个结构体数据中的sno数据。注意:[ ]和->的优先级相同,当利用 (s+i)->score[j]的方式访问数组第 i 个结构体元素中的score数组时,此时 [ ]和-> 的优先级相同,结合是从左到右,所以是先访问到score数组在对数组元素进行访问,所以不用对 (s+i)->score 的整体加括号。

        注意:同类型的结构变量之间,可以相互赋值。

                如:struct student s1;

                      struct student s2;

                     s1 = s2;

共用体:union 共用体名{};

        特点:共用一块内存空间,共用的是最大的那块内存空间。

        共用体初始化时只能给一个值,默认是给到第一个成员的。共用体变量中的值,取决于最后一次给到的值,还要看能影响几个字节。

对比结构体:

        1.结构体中各个成员拥有自己独立的空间

        2.共用体中,成员共用一块空间。

       

    考点:用共用体判断大小端。

1.利用共用体判断大小端。

2.利用指针判断大小端。

枚举:概念:

           作用:1.提高代码的可读性。

                        2.提高代码的安全性。

        注意:列举各种值之间,用逗号隔开。

                  枚举中列举的值,默认是从0开始,如果有给定的值,则后续没有给值的,枚举成员依次加1;

                  枚举类型本质,实际是一个int类型

                   枚举类型的变量与整型类型的变量是一样的

                  与宏定义对比:1.使用阶段不同 ----宏定义在预处理阶段;枚举----编译阶段要检查语法,运行阶段参与代码运行。

                                            2.可读性:都提高了可读性;枚举更能说明有相关性的一些值间关系。

typedef:!!不是定义类型。而是给类型起别名。          

                用法:typedef int a;//表示a是int类型的一个别名。

位运算://C语言特有的运算。

        特点:可以直接操作二进制位。

        与运算:&,运算规则为一假则假。  作用:清0

        或运算:|,运算规则为一真为真。作用:置 1

        取反运算:~,运算规则为真假相对。

        异或运算:^,运算规则为:相同为0,不同为1。作用:加密,交换。

       左移运算:<<: eg: a<<n,表示将a这个数据左移n位。左移一次,相当于数据乘2.

        右移运算:>> 右移一次,相当于除2.。

                逻辑右移:

                算术右移:看符号位是什么。如果是有符号类型数据,右移时 ,最高位补符号位。如果时无符号类型的数据,右移时,最高位补0

        注意:浮点数不能进行位运算。

指针函数:是一个函数,返回值时指针类型。

函数指针:是一个指针,指针的基类型位函数。

注意:malloc()和free()成对出现。free只是释放了空间,表示这块空间又自由了,但是空间上的数据并不会清零。

          1.free()释放空间之后一般不再使用。

           2.指向这块空间的指针是野指针。

          3.free之后对应空间的内容也不要再使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值