日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(转)函数指针,指针函数,指向函数的指针,返回指针的函数

發(fā)布時間:2025/4/16 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)函数指针,指针函数,指向函数的指针,返回指针的函数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

摘要:

在學(xué)習(xí)C語言時,一個比較容易混淆的概念就是函數(shù)指針、指針函數(shù)、返回值為指針的函數(shù)。本文將對這三個概念進(jìn)行區(qū)分。指針函數(shù)就是返回值為指針的函數(shù),兩個本質(zhì)上是同一事物,只是叫法不同。函數(shù)指針就是一個指向函數(shù)的指針,本質(zhì)上是一個指針,只是這個指針指向的對象是函數(shù),而不是一般意義上的存儲對象。

正文:

?

指針函數(shù)

指針函數(shù)就是返回指針值的函數(shù),本質(zhì)是一個函數(shù)。所以指針函數(shù)等價于“返回值為指針的函數(shù)”。

定義

指針函數(shù)的定義格式如下:函數(shù)類型 *函數(shù)名([參數(shù)列表])

當(dāng)然,也可以讓指針標(biāo)志*與函數(shù)類型緊貼在一起,與函數(shù)名分開,其含義一致,格式如下:函數(shù)類型* 函數(shù)名([參數(shù)列表])

相比上一種,這種方式更能表示這是一個指針函數(shù)。在將指針函數(shù)與函數(shù)指針區(qū)分時,也可以通過“指針標(biāo)志*能否和函數(shù)名分離”來判斷這個一個指針函數(shù),還是一個函數(shù)指針。

返回值問題

指針函數(shù)的使用和一般函數(shù)的使用相同,但需注意返回值問題。對于一個返回值為指針的函數(shù),不能返回auto型局部變量的地址,但可返回static型變量的地址。

這是因為auto型變量的生存周期很短,當(dāng)函數(shù)返回時,auto型變量的內(nèi)存空間將被釋放,如果返回值是auto型變量,那么這個返回指針將無效,變成野指針。而static類型變量占用的內(nèi)存空間則不會因為函數(shù)返回而被釋放,不會出現(xiàn)野指針問題。

所以編寫指針函數(shù)使要注意返回值。總體原則是:返回的指針對應(yīng)的內(nèi)存空間不會因函數(shù)返回則被釋放掉。常用的返回指針有以下幾種:

(1)??????函數(shù)中動態(tài)分配內(nèi)存空間(通過malloc等實現(xiàn))的首地址;

(2)??????靜態(tài)變量(static)或全局變量所對應(yīng)的變量的首地址;

(3)??????通過指針形參所獲得的實參的有效地址。

函數(shù)指針

函數(shù)指針就是一個指向函數(shù)的指針。每個函數(shù)在編譯時,會被分配一個入口地址,一般用函數(shù)名來表示,這個地址就是該函數(shù)的指針。

定義

函數(shù)指針的定義格式如下:函數(shù)類型 (*指針變量) ([參數(shù)列表])

在形式上,函數(shù)指針的特征是使用一個括號包裹指針標(biāo)志和指針變量,將括號移除,函數(shù)指針就變成指針函數(shù)。

之所以容易混淆指針函數(shù)和函數(shù)指針,是因為指針函數(shù)的形式如一般指針變量類型,如:int *x、int *y()、int(*z)()

這里x和z表示一個指針,而y則表示一個函數(shù),所以要注意區(qū)分指向變量的指針和指向函數(shù)的指針的形式區(qū)別。

賦值

函數(shù)指針的賦值操作:

使用函數(shù)名給指向函數(shù)的指針變量賦值。其賦值的一般格式如下:函數(shù)指針 = [ &] 函數(shù)名;

其中,函數(shù)名后不能帶括號和參數(shù),函數(shù)名前的&是可選,建議不要使用。

調(diào)用

函數(shù)指針調(diào)用格式:函數(shù)指針變量([實參列表]); 或?(*函數(shù)指針變量)([實參列表]);

推薦第二種用法。這種方法可以很好的表明這是一個函數(shù)。而第一種方法則很容易造成誤導(dǎo)。

之所以容忍一種調(diào)用方法是因為ANSI C 委員會決定容許這種普通函數(shù)調(diào)用句法。這是因為編譯器知道它是一個指向函數(shù)的指針,并且它還知道在該環(huán)境下所能做的惟一的一件事就是調(diào)用函數(shù),因此這里沒有任何模糊不清的表達(dá)。

使用場景

函數(shù)指針的常見用途就是把函數(shù)指針作為參數(shù)傳遞給函數(shù)。

一個函數(shù)通過由運行時決定的指針來調(diào)用另一個函數(shù)的行為叫做回調(diào)(callback)。用戶將一個函數(shù)指針作為參數(shù)傳遞給其它函數(shù),后者將“回調(diào)”用戶的函數(shù)。這樣就可實現(xiàn)通過同一接口實現(xiàn)對不同類型數(shù)據(jù)、不同功能的處理。

?

轉(zhuǎn)自:https://blog.csdn.net/wangxufa/article/details/72935091

轉(zhuǎn)載于:https://www.cnblogs.com/heluan/p/9580991.html

總結(jié)

以上是生活随笔為你收集整理的(转)函数指针,指针函数,指向函数的指针,返回指针的函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。