99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

通過函數(shù)指針調(diào)用函數(shù),需不需要加星號?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2023-09-05 17:05 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

關于函數(shù)指針,一直都有一個爭論的話題:

通過函數(shù)指針調(diào)用函數(shù),需不需要加星號?

void func()
{
}


void (*pf)() = func;
pf();
(*pf)();
同樣,獲取函數(shù)地址的時候,需不需要對函數(shù)名做取地址的操作?
void func()
{
}


void (*pf)() = func;
void(*pf)() = &func;
先來說下結(jié)論,不管是獲取函數(shù)地址,還是通過函數(shù)指針調(diào)用函數(shù),兩種寫法都可以,就用法上來說,沒有什么區(qū)別,初學者也不必過多糾結(jié)。

先來看下獲取函數(shù)地址。 我們在之前的視頻里面也講過,函數(shù)名其實就是函數(shù)的入口地址,所以很多時候直接把函數(shù)名賦值給函數(shù)指針。
void(*pf)() = func;
那加上取地址操作符又是什么意思?
void (*pf)() = &func;
C和指針這本書中這樣解釋:

初始化表達式中的 & 操作符是可選的,因為函數(shù)名被使用時總是由編譯器把它轉(zhuǎn)換成函數(shù)指針,取地址操作符只是顯示的說明了編譯器將隱式執(zhí)行的任務。

這樣看來,加不加取地址好像還真有點區(qū)別,一個表示函數(shù),一個表示函數(shù)的地址,只不過在這個賦值運算中,編譯器把函數(shù)名轉(zhuǎn)換成了地址。

void (*pf)() = func;  //函數(shù)
void(*pf)()=&func;//函數(shù)的地址
要說他倆的區(qū)別,我能想到的就是結(jié)合sizeof來計算類型的長度:
#include 


void test()
{


}


int main()
{
    printf("%lu
", sizeof(test));
    printf("%lu
", sizeof(&test));


    return 0;
}
在64位系統(tǒng)中,這兩個的結(jié)果一個是1,一個是8。 不過需要注意的是,很多編譯器,不支持sizeof+函數(shù)名這種寫法。 接下來就是通過函數(shù)指針調(diào)用函數(shù),需不需要在指針前面加上星號?
pf();
(*pf)();
C陷阱與缺陷這本書中也有提到:

fp是個函數(shù)指針,*fp就是該指針所指向的函數(shù),所以(*fp)()就是調(diào)用函數(shù)的方式。C標準允許程序員將上式簡寫為fp(),但是一定要記住這種寫法也只是一種簡寫形式。

這么看來,好像加上星號更合適一些。

通過函數(shù)指針調(diào)用函數(shù),加不加星號,以及獲取函數(shù)的地址,需要使用 & 運算符,這個跟對數(shù)組名的操作還不一樣。

對數(shù)組名取地址和不取地址含義完全不一樣,使用的時候也有很大的區(qū)別。但是對函數(shù)名取地址和不取地址,使用的時候基本沒有區(qū)別。





審核編輯:劉清

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

    關注

    1

    文章

    1662

    瀏覽量

    50208
  • 函數(shù)指針

    關注

    2

    文章

    57

    瀏覽量

    3973

原文標題:對函數(shù)名取地址

文章出處:【微信號:學益得智能硬件,微信公眾號:學益得智能硬件】歡迎添加關注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    函數(shù)指針指針函數(shù)的概念

    不少朋友會混淆“函數(shù)指針”和“指針函數(shù)”這兩個概念,本文詳細介紹一下。
    發(fā)表于 03-09 10:49 ?1455次閱讀

    函數(shù)指針指針函數(shù)

    。指針函數(shù)的聲明方法為:類型名 *函數(shù)名(函數(shù)參數(shù)列表);其中,后綴運算符括號“()”表示這是一個函數(shù),其前綴運算符
    發(fā)表于 01-22 19:28

    指向code區(qū)數(shù)組的指針不需要code關鍵字的聲明?

    指向code區(qū)數(shù)組的指針不需要code 關鍵字的聲明?
    發(fā)表于 11-02 06:16

    類成員函數(shù)與普通函數(shù)的區(qū)別研究

    本文的目的是研究類成員函數(shù)與普通函數(shù)之區(qū)別,以及不同調(diào)用方式之間的區(qū)別,進而通過內(nèi)聯(lián)匯編語句模仿特定的調(diào)用,從而完成
    發(fā)表于 09-15 14:52 ?32次下載

    使用指針調(diào)用函數(shù)產(chǎn)生 Hard Fault

    使用指針調(diào)用函數(shù)產(chǎn)生 Hard Fault
    發(fā)表于 12-07 17:52 ?0次下載

    函數(shù)指針指針函數(shù)定義

    函數(shù)指針指針函數(shù),C語言學習中最容易混淆的一些概念,好好學習吧
    發(fā)表于 01-11 16:44 ?0次下載

    C語言指針函數(shù)函數(shù)指針詳細介紹

    C語言指針函數(shù)函數(shù)指針詳細介紹。。。。。。。
    發(fā)表于 03-04 15:27 ?5次下載

    c語言函數(shù)指針定義,指針函數(shù)函數(shù)指針的區(qū)別

     往往,我們一提到指針函數(shù)函數(shù)指針的時候,就有很多人弄不懂。下面就由小編詳細為大家介紹C語言中函數(shù)指針
    發(fā)表于 11-16 15:18 ?3870次閱讀

    理解函數(shù)指針函數(shù)指針數(shù)組、函數(shù)指針數(shù)組的指針

    理解函數(shù)指針、函數(shù)指針數(shù)組、函數(shù)指針數(shù)組的指針
    的頭像 發(fā)表于 06-29 15:38 ?1.5w次閱讀
    理解<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>、<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>數(shù)組、<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>數(shù)組的<b class='flag-5'>指針</b>

    函數(shù)指針的基本概念和語法

    函數(shù)指針是一種非常強大的編程工具,它可以讓我們以更加靈活的方式編寫程序。在本文中,我們將介紹 6 個函數(shù)指針的高級應用場景,并貼出相應的代碼案例和解
    的頭像 發(fā)表于 07-05 10:32 ?827次閱讀

    函數(shù)指針的五大作用

    1,回調(diào)函數(shù)機制函數(shù)指針常用于實現(xiàn)回調(diào)函數(shù)通過函數(shù)指針
    的頭像 發(fā)表于 12-06 08:00 ?2303次閱讀
    <b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>的五大作用

    函數(shù)指針指針函數(shù)是不是一個東西?

    函數(shù)指針的本質(zhì)是指針,就跟整型指針、字符指針一樣,函數(shù)指針
    的頭像 發(fā)表于 01-03 16:35 ?770次閱讀
    <b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>和<b class='flag-5'>指針</b><b class='flag-5'>函數(shù)</b>是不是一個東西?

    函數(shù)指針與回調(diào)函數(shù)的應用實例

    通常我們說的指針變量是指向一個整型、字符型或數(shù)組等變量,而函數(shù)指針是指向函數(shù)。 函數(shù)指針
    的頭像 發(fā)表于 03-07 11:13 ?630次閱讀
    <b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>與回調(diào)<b class='flag-5'>函數(shù)</b>的應用實例

    面試???1:函數(shù)指針指針函數(shù)、數(shù)組指針指針數(shù)組

    在嵌入式開發(fā)領域,函數(shù)指針、指針函數(shù)、數(shù)組指針指針數(shù)組是一些非常重要但又容易混淆的概念。理解它
    的頭像 發(fā)表于 08-10 08:11 ?1454次閱讀
    面試???1:<b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>與<b class='flag-5'>指針</b><b class='flag-5'>函數(shù)</b>、數(shù)組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數(shù)組

    函數(shù)指針的六個常見應用場景

    函數(shù)指針在嵌入式開發(fā)中有著廣泛的應用,它讓代碼更加靈活,減少冗余,提高可擴展性。很多時候,我們需要根據(jù)不同的情況動態(tài)調(diào)用不同的函數(shù),而
    的頭像 發(fā)表于 04-07 11:58 ?520次閱讀
    <b class='flag-5'>函數(shù)</b><b class='flag-5'>指針</b>的六個常見應用場景