C语言回炉(3)


---1.结构的前置不完整声明 :

------------------------------------结构的前置不完整声明 实现了两个结构相互包含 使C实现抽象封装成为了可能

------------------------------------ex:

struct b;
struct a
{
	struct b *b_;
};
struct b
{
	struct a *a_;
};

---2.结构对齐:

------------------------------------对齐的模数为【#pragma pack指定的数值】、【未指定#pragma pack时,系统默认的对齐模数(32位系统为4字节,64位为8字节)】和【结构体内部最大的基本数据类型成员】长度中数值较小者 结构体的长度应该是该模数的整数倍。


---3.位段:

------------------------------------位段依赖于当前系统中整形的最大数目 使用后移植性不好 好处是可以使奇数并且很小的数据包装在一起 使空间更加紧凑 仅作了解


---4.calloc / realloc:

------------------------------------malloc调用形式为(类型*)malloc(size):在内存的动态存储区中分配一块长度为“size”字节的连续区域,返回该区域的首地址。
------------------------------------calloc调用形式为(类型*)calloc(n,size):在内存的动态存储区中分配n块长度为“size”字节的连续区域,返回首地址。
------------------------------------realloc调用形式为(类型*)realloc(*ptr,size):将ptr内存大小增大到size。

------------------------------------安全起见 慎用realloc


---5.strdup:

------------------------------------复制字符串到新位置 内部会调用malloc 所以要与free() 成对使用


---6.函数指针:

------------------------------------1)回调函数:将函数像参数一样传递 供调用函数在合适的时候使用这个传入的函数

------------------------------------2)转移表:将需要选择的函数列表放进一个函数指针数组避免通过条件选择调用 需要注意的是 所使用的函数们需要在列表之前声明
----------------------------------------转移表 ex:

double (*oper_func[])(double ,double )= {add,sub,mul,div};  


---7."xyz"[1]:

------------------------------------将字符串常量用作数组用图

------------------------------------ex:

	//将16进制数转换为字符
	putchar("0123456789ABCDEF"[value%16]);




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值