精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

函數指針和指針函數是不是一個東西?

學益得智能硬件 ? 來源:學益得智能硬件 ? 2024-01-03 16:35 ? 次閱讀

函數指針和指針函數是不是一個東西?

這兩個我們之前都有講過,但是并沒有放在一起比較過。

函數指針的本質是指針,就跟整型指針、字符指針一樣,函數指針指向的是一個函數。

每個函數在內存中都會有一個地址,函數調用就是跳轉到這個地址開始執行,而函數指針就是記錄這個地址的變量。

026f24e4-aa13-11ee-8b88-92fbcf53809c.png ?

定義起來稍微有點麻煩:

#include 


inttest(inta)
{
    return a;
}


int main()
{
    int (*p)(int) = test;
    
    return 0;
}
比如test函數,想要記錄他的地址,可以這樣定義指針p:
int (*p)(int) = test;
p是個指針,指向函數,函數有一個int類型的參數,函數的返回值是int。

調用函數的時候,不僅可以通過函數名來調用,也可以通過函數指針p來調用:
test(1);


p(1);
函數指針有什么用?

他的用處很大,比如C語言里面的回調函數,或者在結構體里面存放函數,都可以用函數指針來解決,不清楚的,可以翻翻以前的視頻

指針函數的本質是函數,就像整型函數返回的是整型一樣,指針函數返回的是指針。

于是我們可以隨手寫一個數組,返回數組的名字,因為數組名就是地址。
int *test()
{
    int array[5] = {0};
    
    return array;
}
這是一個典型的錯誤,切記不能返回局部變量的地址,因為函數調用完畢,內存釋放,即使返回了這個地址,也不能使用。

可以返回堆空間地址,也可以返回全局變量地址,或者是靜態變量地址都可以,這種返回地址的函數就叫指針函數。

那把這兩個概念結合起來會怎么樣?

可以,就叫指針函數指針:
int *(*p)() = test;
意思就是定義一個指針,讓他指向剛才的指針函數,這就是C語言中的復雜類型聲明,開發中確實很少會用到,但是筆試中出現的概率高達80%,所以,不要覺得它沒用,想要學好C語言,務必得學會分析。








審核編輯:劉清
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 函數指針
    +關注

    關注

    2

    文章

    55

    瀏覽量

    3760
  • 指針函數
    +關注

    關注

    0

    文章

    10

    瀏覽量

    2729

原文標題:兩分鐘來搞懂函數指針和指針函數

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

收藏 人收藏

    評論

    相關推薦

    函數指針的使用簡述

    函數指針在Linux內核和C語言開發中用的非常多,而且在設計操作系統的時候也會用到,因此這里將詳細講解函數指針。既然函數
    的頭像 發表于 09-09 08:56 ?1879次閱讀
    <b class='flag-5'>函數</b><b class='flag-5'>指針</b>的使用簡述

    函數指針指針函數的概念

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

    文詳解函數指針與回調函數

    函數指針是指向函數指針變量。它允許我們將函數作為參數傳遞給其他函數或將
    發表于 08-22 10:36 ?317次閱讀

    指針作為函數參數

    指針作為函數參數 大多數C程序員開始使用指針時是用它們實現函數的參數,所謂可變參數。為了理解可變參數是如何工作的,我們看看在C語言中如何執行
    發表于 07-29 11:49 ?2678次閱讀

    函數指針指針函數定義

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

    C語言指針函數函數指針詳細介紹

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

    c語言函數指針定義,指針函數函數指針的區別

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

    ARM的函數指針指針函數的區別和用法

    在學習arm過程中發現這“指針函數”與“函數指針”容易搞錯,所以今天,我自己想次把它搞清楚,找了
    的頭像 發表于 06-20 10:08 ?3411次閱讀

    理解函數指針函數指針數組、函數指針數組的指針

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

    C語言-內聯函數、遞歸函數指針函數

    這篇文章介紹C語言的內聯函數、遞歸函數函數指針指針函數、局部地址、const關鍵字、exte
    的頭像 發表于 08-14 10:03 ?1572次閱讀

    指針進階第五站:函數指針

    定義函數指針,指向的函數有兩int形參并且返回
    發表于 08-17 15:58 ?480次閱讀

    如何使用函數指針

    在程序中定義函數,則編譯時系統就會為這段代碼分配段存儲空間,這段存儲空間的首地址稱為函數的地址,且
    的頭像 發表于 03-30 15:09 ?779次閱讀

    函數指針的基本概念和語法

    函數指針種非常強大的編程工具,它可以讓我們以更加靈活的方式編寫程序。在本文中,我們將介紹 8 函數
    的頭像 發表于 12-12 09:33 ?375次閱讀

    函數指針與回調函數的應用實例

    通常我們說的指針變量是指向整型、字符型或數組等變量,而函數指針是指向函數
    的頭像 發表于 03-07 11:13 ?317次閱讀
    <b class='flag-5'>函數</b><b class='flag-5'>指針</b>與回調<b class='flag-5'>函數</b>的應用實例

    面試常考+1:函數指針指針函數、數組指針指針數組

    在嵌入式開發領域,函數指針指針函數、數組指針指針數組是
    的頭像 發表于 08-10 08:11 ?325次閱讀
    面試常考+1:<b class='flag-5'>函數</b><b class='flag-5'>指針</b>與<b class='flag-5'>指針</b><b class='flag-5'>函數</b>、數組<b class='flag-5'>指針</b>與<b class='flag-5'>指針</b>數組