C语言笔记(一)-restrict、inline、大小端、变量重命名

本文详细介绍了C语言中的restrict关键字,强调其用于优化内存访问并避免重叠;内联函数的使用场景、优点及注意事项;探讨了大小端在32位系统中的表示方式及其应用场景;最后讲解了变量重命名的规则和作用域优先级。
摘要由CSDN通过智能技术生成

1.restrict关键字:

理解为告诉编译器此块内存区域只有被restrict关键字修饰的指针是有效的,其他都是无效的,编译器会基于此进行优化。

通常用于修饰形参或新分配的对象。memcpy函数是此关键字应用的一个例子。注意S1与S2不能有重叠,否则这个操作可能正常操作也可能不正常工作,不可信了。所以使用这个函数之前确认二者是否有重叠,是我们应该注意的。

void * memcpy(void * restrict s1, const void * restrict s2, size_t n);

在代码中,如果两个指针(一个被修饰、一个没被修饰)指向的空间有部分重叠,只要没有用没被修饰过的指针去访问重叠区域,就不会出错。

2.inline内联函数:

什么时候用:替换函数式宏,因为函数式宏具有没有类型检查,没有独立作用域,技巧性强,可移植性不好等缺点,尽量用内联函数替换。

有啥优点:没有调用函数的栈内存消耗。省去了函数调用的开销,提升了执行效率,但也会导致代码膨胀,因为他在每个调用点都会展开,如果调用点特别多,膨胀得厉害也会造成效率降低。

怎么用:对于10行以内的小函数写成内联,内部不要有循环,switch或递归。尽量把定义放在头文件中,如果只在头文件中声明的话,其他.c文件调用,include你的头文件后调用并不会是调用内联。

如果一个.c文件调用的内联函数,在此.c文件中能看到内联函数定义,则为内联版本。如果看不到内联定义,则为非内联版本。

注意:inline关键字必须和函数定义放到一起才可以。这个内联主要

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值