色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C++基礎(chǔ)知識(shí)之函數(shù)2

jf_78858299 ? 來源:QStack ? 作者:月下西樓 ? 2023-04-03 10:34 ? 次閱讀

內(nèi)聯(lián)函數(shù)

C++中,我們可以使用inline關(guān)鍵字來定義內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)是一種特殊的函數(shù),它在編譯時(shí)會(huì)被直接嵌入到調(diào)用它的代碼中,從而避免了函數(shù)調(diào)用的開銷,提高了程序的執(zhí)行效率。內(nèi)聯(lián)函數(shù)的定義通常比較短小,否則它的嵌入代碼會(huì)導(dǎo)致程序的體積增大,從而降低程序的性能。另外,內(nèi)聯(lián)函數(shù)的使用也不是萬能的,它只適用于一些簡單的函數(shù),對(duì)于復(fù)雜的函數(shù),我們還是應(yīng)該使用普通的函數(shù)。

使用和定義

在C++中,我們可以使用inline關(guān)鍵字來定義內(nèi)聯(lián)函數(shù)。內(nèi)聯(lián)函數(shù)的定義通常放在頭文件中,以便在多個(gè)源文件中使用。下面是一個(gè)簡單的內(nèi)聯(lián)函數(shù)的例子:

inline int max(int a, int b) {
    return a > b ? a : b;
}

在上面的例子中,max函數(shù)是一個(gè)內(nèi)聯(lián)函數(shù),它的定義前面有inline關(guān)鍵字。當(dāng)我們?cè)诔绦蛑姓{(diào)用max函數(shù)時(shí),編譯器會(huì)將其直接嵌入到調(diào)用它的代碼中,從而避免了函數(shù)調(diào)用的開銷。

優(yōu)點(diǎn)

  • 提高程序的執(zhí)行效率。由于內(nèi)聯(lián)函數(shù)在編譯時(shí)會(huì)被直接嵌入到調(diào)用它的代碼中,從而避免了函數(shù)調(diào)用的開銷,因此可以提高程序的執(zhí)行效率。
  • 可以避免一些函數(shù)調(diào)用帶來的問題。例如,函數(shù)調(diào)用會(huì)導(dǎo)致一些寄存器的值被保存和恢復(fù),從而影響程序的執(zhí)行效率。而內(nèi)聯(lián)函數(shù)的嵌入代碼可以避免這些問題。

缺點(diǎn)

  • 可能會(huì)導(dǎo)致代碼體積增大。由于內(nèi)聯(lián)函數(shù)的嵌入代碼會(huì)被直接嵌入到調(diào)用它的代碼中,因此可能會(huì)導(dǎo)致代碼體積增大,從而降低程序的性能。
  • 可能會(huì)導(dǎo)致代碼重復(fù),效率降低。由于內(nèi)聯(lián)函數(shù)的嵌入代碼會(huì)被直接嵌入到調(diào)用它的代碼中,因此可能會(huì)導(dǎo)致代碼重復(fù),可能會(huì)導(dǎo)致編譯時(shí)間增加。

constexpr函數(shù)

在C++11中,我們可以使用constexpr關(guān)鍵字來定義constexpr函數(shù)。constexpr函數(shù)是一種特殊的函數(shù),它在編譯時(shí)就能夠計(jì)算出結(jié)果,從而可以用于一些需要在編譯時(shí)確定的場合。

?需要注意的是,constexpr函數(shù)的定義和使用有一些限制,例如它的返回值類型必須是字面值類型,它的參數(shù)和函數(shù)體必須是常量表達(dá)式等等。

?

constexpr函數(shù)的定義和使用

在C++11中,我們可以使用constexpr關(guān)鍵字來定義constexpr函數(shù)。下面是一個(gè)簡單的constexpr函數(shù)的例子:

constexpr int factorial(int n) {
    return n <= 1 ? 1 : n * factorial(n - 1);
}

在上面的例子中,factorial函數(shù)是一個(gè)constexpr函數(shù),它的定義前面有constexpr關(guān)鍵字。當(dāng)我們?cè)诔绦蛑姓{(diào)用factorial函數(shù)時(shí),編譯器會(huì)在編譯時(shí)就計(jì)算出結(jié)果,從而可以用于一些需要在編譯時(shí)確定的場合。

優(yōu)點(diǎn)

  • 在編譯時(shí)就能夠計(jì)算出結(jié)果,從而可以用于一些需要在編譯時(shí)確定的場合,可以提高程序的執(zhí)行效率。
  • 由于constexpr函數(shù)的定義通常比較簡單,因此可以在頭文件中定義,從而方便其他文件的使用。

缺點(diǎn)

  • 定義和使用有一些限制。由于constexpr函數(shù)的定義和使用有一些限制,因此不能在所有的場合都使用constexpr函數(shù)。
  • 函數(shù)通常需要在編譯時(shí)計(jì)算出結(jié)果,因此可能會(huì)增加代碼量。 為什么會(huì)增加代碼量呢,例如,在下面的代碼中,我們定義了一個(gè)constexpr函數(shù)factorial,它的定義比較簡單,但是在編譯時(shí)會(huì)生成一些額外的代碼:
constexpr int factorial(int n) {
    return n <= 1 ? 1 : n * factorial(n - 1);
}

int main() {
    std::cout << factorial(5) << std::endl;
    return 0;
}

在上面的代碼中,編譯器會(huì)在編譯時(shí)生成一些額外的代碼,用于計(jì)算factorial(5)的結(jié)果。這些額外的代碼可能會(huì)增加程序的代碼量,從而影響程序的可讀性和維護(hù)性。因此,在使用constexpr函數(shù)時(shí),需要權(quán)衡代碼量和執(zhí)行效率之間的關(guān)系,選擇合適的方案。

函數(shù)指針

在C++中,函數(shù)指針是一種指向函數(shù)的指針,它可以用于調(diào)用函數(shù)或者作為函數(shù)的參數(shù)和返回值。函數(shù)指針的類型由函數(shù)的返回值類型和參數(shù)類型決定,例如,下面是一個(gè)函數(shù)指針的定義:

int (*p)(int, int);

在上面的代碼中,我們定義了一個(gè)函數(shù)指針p,它指向一個(gè)返回值類型為int,參數(shù)類型為int和int的函數(shù)。

函數(shù)指針的使用

函數(shù)指針可以用于調(diào)用函數(shù)或者作為函數(shù)的參數(shù)和返回值。例如,下面是一個(gè)使用函數(shù)指針的例子:

int add(int a, int b) {
    return a + b;
}

int sub(int a, int b) {
    return a - b;
}

int calc(int (*p)(int, int), int a, int b) {
    return p(a, b);
}

int main() {
    int a = 1, b = 2;
    int c = calc(add, a, b);
    int d = calc(sub, a, b);
    std::cout << c << std::endl; // 輸出 3
    std::cout << d << std::endl; // 輸出 -1
    return 0;
}

在上面的代碼中,我們定義了兩個(gè)函數(shù)add和sub,它們分別用于求兩個(gè)整數(shù)的和和差。然后,我們定義了一個(gè)函數(shù)calc,它有三個(gè)參數(shù):一個(gè)函數(shù)指針p,兩個(gè)整數(shù)a和b。calc函數(shù)的作用是調(diào)用函數(shù)指針p,并將a和b作為參數(shù)傳遞給它。在main函數(shù)中,我們使用calc函數(shù)來計(jì)算兩個(gè)整數(shù)的和和差,并輸出結(jié)果。

除了回調(diào)函數(shù),函數(shù)指針還可以用于實(shí)現(xiàn)函數(shù)對(duì)象和函數(shù)指針數(shù)組。函數(shù)對(duì)象是一種類對(duì)象,它重載了函數(shù)調(diào)用運(yùn)算符operator(),從而可以像函數(shù)一樣被調(diào)用。函數(shù)指針數(shù)組是一種數(shù)組,它的元素是函數(shù)指針,可以用于實(shí)現(xiàn)多態(tài)和動(dòng)態(tài)調(diào)用等功能。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • C++
    C++
    +關(guān)注

    關(guān)注

    22

    文章

    2114

    瀏覽量

    73793
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4823

    瀏覽量

    68900
  • 內(nèi)聯(lián)函數(shù)

    關(guān)注

    0

    文章

    10

    瀏覽量

    2246
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C++文件操作

    C++文件操作
    的頭像 發(fā)表于 07-21 10:52 ?1144次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>之</b>文件操作

    學(xué)51單片機(jī)C51基礎(chǔ)知識(shí)

    帶您從零學(xué)51單片機(jī)C51基礎(chǔ)知識(shí) C51基礎(chǔ)知識(shí)1 單片機(jī)的匯編(ASM)和C語言優(yōu)缺點(diǎn)
    發(fā)表于 02-10 14:30 ?109次下載

    C++C/C++程序設(shè)計(jì)教程_C/C++概述

    C++基礎(chǔ)知識(shí),簡要介紹了C++的一些簡單知識(shí),概念,函數(shù)
    發(fā)表于 12-25 10:15 ?0次下載

    C++語言基礎(chǔ)知識(shí)講解

    C++語言基礎(chǔ)知識(shí)講解,喜歡的朋友可以下載來學(xué)習(xí)。
    發(fā)表于 01-14 15:30 ?21次下載

    Visual C++教程之C++基礎(chǔ)知識(shí)介紹

    本文檔的主要內(nèi)容詳細(xì)介紹的是Visual C++教程之C++基礎(chǔ)知識(shí)介紹主要內(nèi)容包括了:1 類和對(duì)象,2 類的成員及特性,3 繼承和派生類
    發(fā)表于 02-15 15:59 ?9次下載
    Visual <b class='flag-5'>C++</b>教程之<b class='flag-5'>C++</b>的<b class='flag-5'>基礎(chǔ)知識(shí)</b>介紹

    C++程序設(shè)計(jì)教程之基礎(chǔ)知識(shí)資料概述

    本文檔詳細(xì)介紹的是C++程序設(shè)計(jì)教程之基礎(chǔ)知識(shí)資料概述主要內(nèi)容包括了:1.程序設(shè)計(jì)語言 ,2.C++前史 ,3.C++,4.C++編程流程,
    發(fā)表于 02-28 11:11 ?13次下載
    <b class='flag-5'>C++</b>程序設(shè)計(jì)教程之<b class='flag-5'>基礎(chǔ)知識(shí)</b>資料概述

    C++程序設(shè)計(jì)的基礎(chǔ)知識(shí)初步了解C++的資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C++程序設(shè)計(jì)的基礎(chǔ)知識(shí)初步了解C++的資料免費(fèi)下載包括了:1 認(rèn)識(shí)C++,2
    發(fā)表于 06-10 08:00 ?25次下載
    <b class='flag-5'>C++</b>程序設(shè)計(jì)的<b class='flag-5'>基礎(chǔ)知識(shí)</b>初步了解<b class='flag-5'>C++</b>的資料免費(fèi)下載

    C++函數(shù)模板的概念及意義

    一、函數(shù)模板的引出:1、c++中有幾種交換變量的方法:(1)定義宏代碼塊(2)定義函數(shù)代碼版本一:#include <iostream>#include <string>using n
    的頭像 發(fā)表于 12-24 15:58 ?897次閱讀

    C++重載函數(shù)學(xué)習(xí)總結(jié)

    函數(shù)重載是c++對(duì)c的一個(gè)重要升級(jí);函數(shù)重載通過參數(shù)列表區(qū)分不同的同名函數(shù);extern關(guān)鍵字能夠?qū)崿F(xiàn)c
    的頭像 發(fā)表于 12-24 17:10 ?824次閱讀

    C++核心編程基礎(chǔ)知識(shí)大全免費(fèi)下載

    C++核心編程基礎(chǔ)知識(shí)大全免費(fèi)下載
    發(fā)表于 12-03 18:06 ?2次下載

    C/C++基礎(chǔ)知識(shí)匯總

    這是一篇五萬字的C/C++知識(shí)點(diǎn)總結(jié),包括答案。
    的頭像 發(fā)表于 06-12 15:10 ?2449次閱讀

    C++基礎(chǔ)知識(shí)

    C++基礎(chǔ)知識(shí)
    的頭像 發(fā)表于 01-12 11:00 ?1440次閱讀
    <b class='flag-5'>C++</b><b class='flag-5'>基礎(chǔ)知識(shí)</b>

    深度解析C++中的虛函數(shù)

    函數(shù)作為C++的重要特性,讓人又愛又怕,愛它功能強(qiáng)大,但又怕駕馭不好,讓它反咬一口,今天我們用CPU的角度,撕掉語法的偽裝,重新認(rèn)識(shí)一下虛函數(shù)。 虛函數(shù)
    的頭像 發(fā)表于 02-15 11:14 ?865次閱讀
    深度解析<b class='flag-5'>C++</b>中的虛<b class='flag-5'>函數(shù)</b>

    C++基礎(chǔ)知識(shí)函數(shù)1

    函數(shù)C++ 中的一個(gè)重要概念,它可以讓我們將一段代碼封裝起來,然后在需要的時(shí)候調(diào)用它。C++ 中的函數(shù)有以下幾個(gè)特點(diǎn): * 函數(shù)
    的頭像 發(fā)表于 04-03 10:34 ?599次閱讀

    C++語言基礎(chǔ)知識(shí)

    電子發(fā)燒友網(wǎng)站提供《C++語言基礎(chǔ)知識(shí).pdf》資料免費(fèi)下載
    發(fā)表于 07-19 10:58 ?7次下載
    主站蜘蛛池模板: 在线高清无码欧美久章草 | 久见久热 这里只有精品 | 午夜AV亚洲一码二中文字幕青青 | 亚洲 欧美 国产 伦 综合 | 巨污全肉np一女多男 | 97免费在线视频 | 宝贝好紧好爽再搔一点试視頻 | 两个人的视频日本在线观看完整 | 国产一级做a爰片久久毛片男 | 60岁老年熟妇在线无码 | 亚洲绝美精品一区二区 | 老司机亚洲精品影院在线观看 | 秀婷程仪公欲息肉婷在线观看 | 国产精品大全国产精品 | 亚洲国产成人综合 | 经典三级四虎在线观看 | 亚洲 欧美 日韩 卡通 另类 | 精品国产在线观看福利 | 国产一级毛片在线 | 鸭子玩富婆流白浆视频 | 国产精品www视频免费看 | 青草久久伊人 | 无人区国产片 | 99久久精品国产一区二区三区 | 久久精品热老司机 | 日韩高清一区二区三区不卡 | 最近中文字幕免费高清MV视频 | 丰满人妻按磨HD | 日本XXXXZZX片免费观看 | 国产99九九久久无码熟妇 | 欧美激情视频二区 | 超碰在线视频公开 | 国产精品国产三级国产an | gogogo免费视频观看 | 色欲AV精品人妻一二三区 | 18禁三级黄 | 久久九九亚洲精品 | 欧美高清videosgratis高 | 伦理片92伦理午夜 | 先锋影音av最新资源网 | 嫩草成人国产精品 |