C提高day05

结构体数组赋值,和二维数组赋值类似,可以{{},{}};、也可以{,,,}。

两者等价,q[i].stu 与 (q+i)->stu

浅拷贝和深拷贝,发生在结构体内嵌套了指针,且动态分配空间时

        浅拷贝,eg:不同结构体变量中的同类型成员,一起指向一个内存区域,易发生重复释放(free())

        深拷贝,eg:再开辟一块内存区域,并重新拷贝一份,不同结构体变量中的同类型成员,虽然值相同,却指向不同的内存区域

结构体字节对齐规则,默认以结构体中最长的成员类型为对齐单位(基准),依次按顺序存放(不能乱序存放)

                char a[4],相当于4个char依次存放

        结构体嵌套结构体时,当轮到被嵌套进去的那个结构体类型时,无论如何,都另起一行(行的字节长度即为基准,此时基准取两个结构体中最长的成员类型为对齐单位)

可以指定对齐单位,#pragma pack(2)——指定对齐单位为2个字节,必须是2的n次方

        如果小于最长的成员,最长的成员就分行放,eg:#pragma pack(2),int类型,一行放2个字节

        如果大于最长的成员,系统机智的按照默认来,以节省空间

不完整类型的字节对齐,eg:

struct A

{

    int     a1:5;

    int     a2:9;

    char    c;

    int     b:4;

    short   s;

}A;

        若两位域字段的类型相同,且相邻位域的位宽之和小于该类型的sizeof大小,则后者与前者紧邻存储

        若两位域字段的类型相同,相邻位域的位宽之和大于该类型的sizeof大小,则另起一行

        若两位域字段的类型不同,VC6采取不压缩方式,Dev-C++和gcc采取压缩方式

        如果两位域字段之间穿插着非位域字段,则不进行压缩

        

        整个结构体的总大小,为最宽基本类型成员大小的整数倍(这是该类大问题的一个共性)

分子分母有一个是小数(或double类型),就可以得到小数;分子分母都是整数,则只会截取最终结果的整数部分

指针间接赋值:先用同级指针开辟内存空间,然后再把同级指针的值,赋值给真正需要开辟空间的指针

指针变量,通过存储某内存空间地址的方式,以指向某内存空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值