C/C++ | 面试基础题整理


1. C和C++中短小函数的实现

  1. C为宏定义实现。#define Max(a,b) ( a>b?a:b)
  2. C++: 内:内联函数,函数名前加上关键字inline
inline int Max(a, b)
{
      return a>b?a:b;
}
  1. 两者比较
    • 宏定义

      • 不是函数
      • 预处理器用复制宏代码的方式替换函数的调用,避免了函数调用压栈入栈的过程,从而提高了效率。
      • 宏是在编译前即编译预处理阶段将宏名替代成宏体,即字符串替换
      • 不检查参数类型而直接进行替换,导致错误参数类型也能被替换。
    • 内联函数inline

      • 其本质还是函数
      • 在编译时将有关代码直接嵌入到调用处,从而减少普通函数调用时的资源消耗,加快程序运行的速度。
      • 编译时会检查参数类型
      • 相比宏,内联函数更安全可靠。
      • 内联函数适用与只有几行代码,不包括for while switch 递归语句,并且被不断重复调用的函数。
      • 内联函数不需要寻址,在函数调用处直接执行编译时嵌入的代码。
      • 参数传递机制与普通函数相同
    • 普通函数

      • 被调用时,首先到函数的入口地址执行函数体,再回到调用函数的地方继续执行。
      • 函数调用存在开销


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容