宏与内联函数

宏与内联函数

宏是c语言的历史遗产,功能很强,但极容易自残

尽量不用宏

宏的缺点:调试困难,错误不易理解,缺少编译器的监督

  1. 无参宏,尽量用 const 代替
    程序中的常量,将来可能变化的参数,尽量用const 类型,不要魔法数字
  2. 有参宏,尽量用 内联函数代替
    相较于函数,宏的好处是:效率!

但c++的内联可以在满足效率的要求下,避免宏的尴尬
语法:用inline 修饰一下
原理:用函数代码本身代替函数调用
在这里插入图片描述

内联并不改变程序的逻辑和功能
内联提高程序执行效率(增加了执行代码尺寸)

【例】
冒泡排序
先输入一个整数n,表示后面整数个数
接着输入n 个整数
要求,按从大到小顺序输出这n个整数,空格分开
【思路】
冒泡排序要进行多趟
每趟从左到右,相邻比较,不行就交换之,最大的数靠右
在这里插入图片描述代码:

#include ‹iostream> 
using namespace std;

inline void swap(int* p, int* q)
{
	int t = *p;
	*p = *9*q = t;void sort(int* buf, int n)
{
	for(int i=0; i<n; i++){
		if(buf[i] › buf[i+1]) swap(buf+i, buf+i+1);}

int main()
{
	int n; cin > n;
	int* buf = new int [n];
	// 输入数据
	for(int i=0; i<n; i++) cin >> buf[i];
	// 多趟排序
	for(int i=n-1; i>0; i--) sort(buf, i);
	// 显示结果
	for(int i=0; i‹n; i++) cout << buf[i] << " ";
	// 别忘记了回收堆数据
	delete [] buf;
	
	return 0;
}

练习

1.inline 函数的缺点是?
A 执行效率差
B 不容易调试
C 程序难于维护,会出现诡异行为
D 生成的执行代码大小可能膨胀

2.10个数据冒泡排序,一共需要比较多少次?
A 42
B 45
C 50
D 55

答案:d, b

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值