day11 最后一次C语言

联合体

union ***{

};

联合体也是一种特殊的自定义数据类型,这种类型定义的变量也包含一系列成员,特点是这些成员共用同一块空间(所以联合体也叫共用体)

联合体的成员共用一块空间(地址相同)

联合体的大小至少是最大成员的大小

当最大成员大小不是所有成员最大位置偏移大小的整数倍时,联合体的整体大小就是所有成员最大位置偏移大小的整数倍

最大位置偏移大小:如int是4,char是1,char arr[5]也是1

在64位的系统中(比如win64)1字(word)= 8字节(byte)=64(bit)

枚举

enum ***{

                        * ,

                        *

};

把可能的值一一罗列出来

枚举是一种类型(宏不是类型)

枚举的是整形,如果不赋值会默认从0开始,依次递增

枚举的优点

1. 增加代码的可读性和可维护性

2. 和#define定义的标识符比较,枚举有类型检查,更加严谨

3. 防止命名污染

4.使用方便,一次可以i定义多个常量

位域(位段)

位域可以把一个字节分成好几段,每一段都可以存储数据

struct **{

        int a:8;

        int b:4;

        ...

};

一,位域类型的声明

1. 带有预定义宽度的变量被称为位域

2. 位域必须是int 、unsigned int、 signed int、char和unsigned char类型

3. 位域后边有一个冒号和一个数字(所占二进制位的大小)

会占用4byte的空间(int),但是只有2byte被用来存储

1byte(字节)=8bit(比特)

大端字节序:高位字节在前,低位字节在后,这是人类读写数值的方法。

小端字节序:低位字节在前,高位字节在后

二,位域说明

1.如一个字节所剩空间不够存放另一位域时,则会从下一单元起存放该位域。也可以有意使某位域从下一单元开始

2.位域可以是无名位域,这时它只用来填充或调整位置。无名位域不能使用

空域可用来调整存储数据的位置

3,位域的宽度不能超过他所依附的数据类型的长度

内存管理

C语言运行时的内存分配

static关键字

可以修饰变量(全局变量,局部变量)和函数

用static修饰的局部变量可以延长其生命周期

修饰全局变量会限制其使用范围,只能在本文件使用,其他文件不能用(一般不用)

动态内存分配

<1>malloc(开辟空间)

<2>free(释放空间)

<3>calloc(开辟空间)

<4>realloc(开辟空间)

*void是任何类型

void是空类型        

柔性数组

C99中,结构体中的最后一个元素允许是未知大小的数组,就叫做[柔性数组]的成员

strlen

返回在字符串中”\0“前面出现的字符个数(不包括\0)

strcmp(n1,n2)

比较字符大小,前者如果大于后者返回值大于零

等于则返回零,小于则返回小于零

strstr

查找str1和str2是否存在,如果存在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值