元始天尊徒弟(元始天尊的徒弟排名) 深入太極八卦《武神》江湖第一道學副本(江湖風云錄九陰真經(jīng),北冥神功) 女媧是怎么來到人世的(女媧是怎么死的) 如何把FLV轉換成RMVB(怎么轉換成flv) word文件擴展名是什么(word的文件擴展名是什么) 南京審計學院就業(yè)前景(南京審計學院) 韓式一字眉修飾技巧(韓式一字眉修飾技巧圖片) 微信小游戲猜歌達人451-500關答案 騎行圈大神(騎行圈論壇) 中年人如何補鈣(中年人如何補鈣維生素AD膠丸) AKG K3003 評測(akgk3003評測視頻) 邊坡比是什么意思(邊坡比) 忍不住虐狗怎么辦?(忍不住虐狗怎么辦知乎) 靈魂潮汐黃昏暮會瑪蒙BOSS打法攻略(靈魂潮汐活動瑪蒙) 手動檔換擋技巧(手動檔) 儀表保護箱如何分類及應用(儀表保護箱如何分類及應用圖片) 羊角梳子和牛角梳子哪個更好(銀梳子和牛角梳哪個好) 進出口貿易怎么做(外貿出口流程) kingsoft是什么意思可以刪除嗎(kingsoft可以刪除) 淘寶試用攻略(淘寶試用攻略在哪里看) 嬰兒鬧夜有什么好辦法(嬰兒鬧夜有什么好辦法緩解) 如何重新激活淘寶店鋪及發(fā)布寶貝(如何重新激活淘寶店鋪及發(fā)布寶貝的權限) 沖鋒衣如何選購全攻略(沖鋒衣購買指南) 藍色生死戀演員表恩熙小時候(藍色生死戀演員表) QQ如何打開電臺隨機播放(QQ音樂怎么開電臺) 如何怎么下載安裝steam平臺(steam平臺游戲安裝教程) 大地保險車險報案電話(大地保險車險怎么樣) 武昌魚清蒸的做法(武昌魚清蒸的做法幾分鐘) 常用的招聘網(wǎng)站有哪些(現(xiàn)在招聘都用什么網(wǎng)站) 雨愛吉他譜彈唱原版(雨愛吉他譜簡單版) 海帶打結的作用(海帶打結的作用原理) 電腦怎么制作表格新手 初學者(怎樣制作表格) 暴走英雄壇丐幫入門任務攻略流程(暴走英雄壇丐幫入門任務攻略流程視頻) 最簡單的iPhone鈴聲設置方法(iphone鈴聲怎樣設置) 如何做好一個保險律師(如何做好一個保險律師助理) 手閱怎么進行提現(xiàn)賬號設置(掌閱能提現(xiàn)嗎) 聯(lián)想A366T獲取Root權限詳細圖文教程 一個人筆仙游戲怎么玩(筆仙游戲怎么玩圖片) 手動蝶閥怎么看開關(手動蝶閥怎么看開關工具) 如何下載【武林外傳】(武林外傳在哪里可以免費下載) 燙金字怎么做(燙金字) 如何讓茶樓加盟店生意更好?(如何讓茶樓加盟店生意更好些) 如何判斷qq是否隱身(怎么看QQ是否隱身) 80平米兩室一廳裝修(8度) 瓷磚的色彩應該如何搭配?(瓷磚的色彩應該如何搭配好看) 微觀經(jīng)濟學的定義是什么(微觀經(jīng)濟學的定義) 書包背帶怎么系(書包背帶怎么系不會掉) 研究發(fā)現(xiàn)與巴頓病有關的蛋白質對于產(chǎn)生新的溶酶體至關重要 研究人員開發(fā)了一種新型抗炎藥 NLRP1 和 NLRP3 炎癥小體抑制劑 聲明概述了心臟腫瘤護理和研究方面的不平等
您的位置:首頁 >綜合知識 >

什么是指針函數(shù)(函數(shù)指針和指針函數(shù)有啥區(qū)別)

導讀 關于什么是指針函數(shù),函數(shù)指針和指針函數(shù)有啥區(qū)別這個問題很多朋友還不知道,今天小六來為大家解答以上的問題,現(xiàn)在讓我們一起來看看吧!1

關于什么是指針函數(shù),函數(shù)指針和指針函數(shù)有啥區(qū)別這個問題很多朋友還不知道,今天小六來為大家解答以上的問題,現(xiàn)在讓我們一起來看看吧!

1、函數(shù)指針和指針函數(shù)的區(qū)別:一、【函數(shù)指針】 在程序運行中,函數(shù)代碼是程序的算法指令部分,它們和數(shù)組一樣也占用存儲空間,都有相應的地址。

2、可以使用指針變量指向數(shù)組的首地址,也可以使用指針變量指向函數(shù)代碼的首地址,指向函數(shù)代碼首地址的指針變量稱為函數(shù)指針。

3、 函數(shù)指針定義 函數(shù)類型(*指針變量名)(形參列表); “函數(shù)類型”說明函數(shù)的返回類型,由于“()”的優(yōu)先級高于“*”,所以指針變量名外的括號必不可少,后面的“形參列表”表示指針變量指向的函數(shù)所帶的參數(shù)列表。

4、 例如: int (*f)(int x); double (*ptr)(double x); 在定義函數(shù)指針時請注意: 函數(shù)指針和它指向的函數(shù)的參數(shù)個數(shù)和類型都應該是—致的; 函數(shù)指針的類型和函數(shù)的返回值類型也必須是一致的。

5、 2、函數(shù)指針的賦值 函數(shù)名和數(shù)組名一樣代表了函數(shù)代碼的首地址,因此在賦值時,直接將函數(shù)指針指向函數(shù)名就行了。

6、 例如, int func(int x); /* 聲明一個函數(shù) */ int (*f) (int x); /* 聲明一個函數(shù)指針 */ f=func; /* 將func函數(shù)的首地址賦給指針f */ 賦值時函數(shù)func不帶括號,也不帶參數(shù),由于func代表函數(shù)的首地址,因此經(jīng)過賦值以后,指針f就指向函數(shù)func(x)的代碼的首地址。

7、 3、通過函數(shù)指針調用函數(shù) 函數(shù)指針是通過函數(shù)名及有關參數(shù)進行調用的。

8、 與其他指針變量相類似,如果指針變量pi是指向某整型變量i的指針,則*p等于它所指的變量i;如果pf是指向某浮點型變量f的指針,則*pf就等價于它所指的變量f。

9、同樣地,*f是指向函數(shù)func(x)的指針,則*f就代表它所指向的函數(shù)func。

10、所以在執(zhí)行了f=func;之后,(*f)和func代表同一函數(shù)。

11、 由于函數(shù)指針指向存儲區(qū)中的某個函數(shù),因此可以通過函數(shù)指針調用相應的函數(shù)。

12、現(xiàn)在我們就討論如何用函數(shù)指針調用函數(shù),它應執(zhí)行下面三步: 首先,要說明函數(shù)指針變量。

13、例如:int (*f)(int x); 其次,要對函數(shù)指針變量賦值。

14、 例如: f=func; (func(x)必須先要有定義) 最后,要用 (*指針變量)(參數(shù)表);調用函數(shù)。

15、 例如: (*f)(x);(x必須先賦值) 【例】任意輸入n個數(shù),找出其中最大數(shù),并且輸出最大數(shù)值。

16、 main() { int f(); int i,a,b; int (*p)(); /* 定義函數(shù)指針 */ scanf("%d",&a); p=f; /* 給函數(shù)指針p賦值,使它指向函數(shù)f */ for(i=1;i<9;i++) { scanf("%d",&b); a=(*p)(a,b); /* 通過指針p調用函數(shù)f */ } printf("The Max Number is:%d",a) } f(int x,int y) { int z; z=(x>y)?x:y; return(z); } 運行結果為: 343 -45 4389 4235 1 -534 988 555 789↙ The Max Number is:4389 二、【指針函數(shù)】 一個函數(shù)不僅可以帶回一個整型數(shù)據(jù)的值,字符類型值和實型類型的值,還可以帶回指針類型的數(shù)據(jù),使其指向某個地址單元。

17、 返回指針的函數(shù),一般定義格式為: 類型標識符 *函數(shù)名(參數(shù)表) int *f(x,y); 其中x,y是形式參數(shù),f是函數(shù)名,調用后返回一個指向整型數(shù)據(jù)的地址指針。

18、f(x,y)是函數(shù),其值是指針。

19、 如:char *ch();表示的就是一個返回字符型指針的函數(shù),請看下面的例題: 【例】將字符串1(str1)復制到字符串2(str2),并輸出字符串2. #include "stdio.h" main() { char *ch(char *,char *); char str1[]="I am glad to meet you!"; char str2[]="Welcom to study C!"; printf("%s",ch(str1,str2)); } char *ch(char *str1,char *str2) { int i; char *p; p=str2 if(*str2==NULL) exit(-1); do { *str2=*str1; str1++; str2++; }while(*str1!=NULL); return(p); } 通過分析可得: 函數(shù)指針是一個指向函數(shù)的指針,而指針函數(shù)只是說明他是一個返回值為指針的函數(shù), 函數(shù)指針可以用來指向一個函數(shù)。

本文分享完畢,希望對大家有所幫助。

標簽:

免責聲明:本文由用戶上傳,如有侵權請聯(lián)系刪除!