iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++内联函数详情
  • 434
分享到

C++内联函数详情

2024-04-02 19:04:59 434人浏览 薄情痞子
摘要

内联函数是c++当中为了提高程序运行效率的设计,老实讲我没有在其他语言当中看到类似的设计。它和常规函数之间的主要区别不在于编写的方式,而是在于C++编译器会将内联函数组合到程序当中

内联函数是c++当中为了提高程序运行效率的设计,老实讲我没有在其他语言当中看到类似的设计。它和常规函数之间的主要区别不在于编写的方式,而是在于C++编译器会将内联函数组合到程序当中执行。

要解释这个过程会稍稍有些复杂,我们需要从编译的过程说起。对于编译型语言而言,编译器做的事情是把人类写出来人能读懂的代码翻译成机器能够识别、执行的机器语言,一般是一串十六进制的指令。随后计算机逐步执行这些指令,完成我们想要的功能。

当我们调用函数时,其实本质上是指令跳转,先记录下当前运行的指令位置,跳转到函数所在的指令位置进行执行,执行完成之后再跳转回来。这个当中除了跳转之外,还会发生一些参数的传递和拷贝,需要一定的开销。

而使用内联函数,本质上可以理解成使用相应的函数代码代替了函数调用。可以简单理解成把函数当中的代码拷贝了一份粘贴到了函数调用的位置,代替了函数跳转。举个例子,比如说我们有一个函数来计算坐标到原点的距离:


include<cmath>

double distance(double x, double y) {
    return sqrt(x * x + y * y);
}

double x = 3.0, y = 4.0;
double d = distance(x, y);

当我们使用了内联函数之后,它相当于把函数的代码拷贝了一份粘贴到了调用的位置:


double x = 3.0, y = 4.0;
double d = sqrt(x * x + y * y);

这也就是内联的含义,使用了内联函数之后,程序无须跳转到另外一个位置进行执行,可以节省掉跳转所带来的开销。因此运行效率要比普通函数更快,但代价是需要占用更多的内存。比如我们调用了10次内联函数,相当于代码拷贝了十份。

内联函数的使用非常简单,就是在函数定义之前加上inline关键字。

需要注意的是,有的时候我们虽然加上了inline关键字但编译器并不一定会遵照执行。有些编译器会有函数规模的限制,并且会限制内联函数禁止调用自己,也就是不能递归

还有一点是内联函数虽然有内联机制,但是函数的传参依然是值传递,也就是说会发生拷贝,和普通函数一致。

C语言当中没有inline特性,C语言是使用宏定义来实现类似的功能。但宏定义并不是通过参数传递,而是代替机械替换实现的。

比如:


#define SQUARE(x) x*x

double a = SQUARE(3.4 + 3.5);

这样我们得到的结果会是3.4 + 3.5 * 3.4 + 3.5,也就是说宏定义只是机械地替换代码,并不是函数式的调用。所以要实现类似inline函数的效果,可以使用括号:


#define SQUARE(x) ((x) * (x))

到此这篇关于C++内联函数详情的文章就介绍到这了,更多相关C++内联函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

出品 | 公众号:Coder梁(ID:Coder_LT)

--结束END--

本文标题: C++内联函数详情

本文链接: https://www.lsjlt.com/news/157425.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++内联函数详情
    内联函数是C++当中为了提高程序运行效率的设计,老实讲我没有在其他语言当中看到类似的设计。它和常规函数之间的主要区别不在于编写的方式,而是在于C++编译器会将内联函数组合到程序当中...
    99+
    2022-11-12
  • C++ 引用与内联函数详情
    目录引用初阶什么是引用为何要有引用引用指向同一块空间引用的特性定义时必须初识化一个变量可以多次引用引用一旦引用了一个实例,不能在再引用其他的实例引用进阶常引用权限临时变量具有常属性引...
    99+
    2022-11-13
  • C++ 内联函数详解
    目录一、C++ 内联函数1.内联2.语法3.评价总结一、C++ 内联函数 1.内联 C 语言中有宏函数的概念。宏函数的特点是内嵌到调用代码中去,避免了函数调用的开销。但是由于宏函数的...
    99+
    2022-11-12
  • C++ 内联函数inline案例详解
    使用函数能够避免将相同代码重写多次的麻烦,还能减少可执行程序的体积,但也会带来程序运行时间上的开销。 函数调用在执行时,首先要在栈中为形参和局部变量分配存储空间,然后还要将实参的值复...
    99+
    2022-11-12
  • C++超详细分析讲解内联函数
    目录宏函数(带参数的宏)的缺点inline修饰的函数就是内联函数内联函数的特点宏函数和内联函数的区别宏函数(带参数的宏)的缺点 第一个问题:宏函数看起来像一个函数调用,但是会有隐藏一...
    99+
    2022-11-13
  • C++内联函数不宜使用情况的示例分析
    这篇文章将为大家详细讲解有关C++内联函数不宜使用情况的示例分析,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C++语言中的各种应用是一个非常高深的内容,其中的语法、特性、标准类库都是我们值...
    99+
    2023-06-17
  • 什么是C++内联函数
    这篇文章主要介绍“什么是C++内联函数”,在日常操作中,相信很多人在什么是C++内联函数问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是C++内联函数”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!一、...
    99+
    2023-06-25
  • C语言 main 函数详情
    目录1、main()2、void main()3、int main(void)4、int main ()5、int main(int argc,char *argv[])前言: 但...
    99+
    2022-11-12
  • C语言 sizeof 函数详情
    目录一.sizeof 函数简介二.sizeof 函数实战一.sizeof 函数简介 在 C 语言中,char 字符串也是一种非常重要的数据类型,我们除了使用 sizeof 函数获取字...
    99+
    2022-11-12
  • C语言 sprintf 函数详情
    目录一.sprintf 函数简介二.sprintf 函数使用三.sprintf/fprintf/printf 函数区别一.sprintf 函数简介 sprintf 函数用于将格式化的...
    99+
    2022-11-12
  • C++宏函数和内联函数的使用
    目录1. 宏常量&宏函数1.1 定义1.2 使用宏函数的注意事项2. 内联函数2.1 定义2.2 某些情况编译器不会做内联编译3. 补充3.1 宏定义和函数的区别3.2 宏定...
    99+
    2022-11-13
  • c++内联函数怎么引用
    在C++中,内联函数是通过将函数的定义放在每个调用点处进行替换,而不是通过函数调用来实现的。因此,在引用内联函数时,需要确保函数的定...
    99+
    2023-10-26
    C++
  • C#中内联函数怎么用
    这篇文章将为大家详细讲解有关C#中内联函数怎么用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。C++ 中有个内联函数,使用 inline 来修饰函数,编译器就会对其进行优化,将此函数作为代码判断插入到调用...
    99+
    2023-06-29
  • 深入理解C++内联函数
    目录内联函数的概念内联函数和宏内联函数的特性总结内联函数的概念 以inline修饰的函数叫做内联函数,编译时C++编译器会在调用内联函数的地方展开,没有函数压栈的开销,内联函数的使用...
    99+
    2022-11-12
  • C++ 函数重载详情介绍
    文章转自微信公众号:Coder梁(ID:Coder_LT) 函数重载 函数重载还有一个别名叫函数多态,其实我个人感觉函数多态这个名字更好理解更恰当一些。 函数多态是C++在C语言基础...
    99+
    2022-11-12
  • C++函数的默认参数详情
    文章转自微信 公众号:Coder梁(ID:Coder_LT) C++当中的支持默认参数,如果你学过Python,那么想必对此不会陌生。C++中的默认参数的用法和Python基本一致...
    99+
    2022-11-12
  • Python 内置函数之随机函数详情
    目录导入模块: import random 1、random.choice(列表/元组/字符串) ,在列表或者元组中随机挑选一个元素,若是字符串则随机挑选一个字符 nu...
    99+
    2022-11-12
  • C++入门教程之内联函数与extern "C"详解
    目录一.   内联函数1.概念及分析2.特性3.宏二.   extern “C”1.C++程序2.C程序 总...
    99+
    2023-01-10
    c++内联函数是什么 c++  extern c c++内联函数使用
  • C/C++内存管理详情
    目录C/C++内存管理1. C/C++内存分布2. C语言中动态内存管理方式2.1 malloc/calloc/realloc和free3. C++内存管理方式3.1 new/del...
    99+
    2022-11-12
  • C++宏函数和内联函数如何使用
    今天小编给大家分享一下C++宏函数和内联函数如何使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。1. 宏常量&宏函...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作