神武抓魚怎么玩(神武抓魚怎么玩視頻) 絕對(duì)優(yōu)勢(shì)理論和比較優(yōu)勢(shì)理論異同(絕對(duì)優(yōu)勢(shì)理論和比較優(yōu)勢(shì)理論的區(qū)別) 如何在魅族的應(yīng)用中心發(fā)布應(yīng)用或者主題(如何在魅族的應(yīng)用中心發(fā)布應(yīng)用或者主題軟件) 微信如何清理僵尸粉(微信如何清理僵尸粉又不被別人發(fā)現(xiàn)) 空中疊墅是什么意思(疊墅是什么意思) 社保滯納金怎么算(單位補(bǔ)繳社保滯納金怎么算) 手動(dòng)搬運(yùn)車怎么使用(手動(dòng)搬運(yùn)車怎么使用的) 專管員為什么討厭代賬會(huì)計(jì)(專管員) 百度百科博物館計(jì)劃十周年紀(jì)念微章怎么領(lǐng)取(100周紀(jì)念章) 小蘇打能治好腫瘤是真的嗎(自制蘇打水的危害) 守護(hù)光明頂1.6攻略(守護(hù)光明頂1.6通關(guān)攻略) 重癥疾病險(xiǎn)該不該買(重癥疾病有哪些) 拼裝積木游戲怎么玩(拼裝積木游戲怎么玩的) 電熱水器使用說明書(美的電熱水器使用說明書) LED發(fā)光二極管(led發(fā)光二極管電壓是多少) 豐胸的最快方法3+3動(dòng)作加瑜伽讓你擁有傲人胸器(最有效瑜伽的運(yùn)動(dòng)豐胸方法) 少年歌行名劍譜排名(劍譜排名) gif動(dòng)圖怎么壓縮?如何在線壓縮gif大小?(在線壓縮gif圖片大小) 楊玉環(huán)怎么玩連招(楊玉環(huán)怎么玩連招視頻) 乳糜血(乳糜) 怎么學(xué)高中歷史的竅門(怎么學(xué)高中歷史的竅門和技巧) 梨樹的作用與功效(梨樹的作用與功效圖片) 藍(lán)芩口服液的功效與作用和蒲地藍(lán)口服液的區(qū)別(藍(lán)芩口服液的功效與作用) js 隨機(jī)數(shù)整數(shù)(js隨機(jī)數(shù)整數(shù)) 湖州火車站附近酒店(湖州火車站) QQ飛車城邦守護(hù)獸怎么進(jìn)化(QQ飛車城邦守護(hù)獸) 韓式盤發(fā)簡(jiǎn)單教程(韓式盤發(fā)簡(jiǎn)單教程圖解) 地下城assertion failed錯(cuò)誤怎么辦(assertion failed怎么解決) 向量相乘坐標(biāo)公式怎么推算出來的(向量相乘坐標(biāo)公式) 拉丁舞裙服裝怎么畫(拉丁舞裙服裝怎么畫簡(jiǎn)筆畫) 裁決之鐮怎么解除(裁決之鐮怎么辦) 10178什么意思(1017代表什么意思) 如何選擇進(jìn)口嬰兒奶粉(如何選擇進(jìn)口嬰兒奶粉牌子) EVIDENT與深圳灣實(shí)驗(yàn)室舉辦首屆EVIDENT Discovery Center生物成像主題研討 合肥歡樂島旅游攻略(合肥歡樂島旅游攻略路線) 侏儒癥的癥狀及病因(侏儒癥的癥狀) 漂白 護(hù)理牙齒如何變白?(漂白牙齒怎么漂白) 波爾多液怎么配制?(波爾多液怎么配制用來防治西瓜枯萎病) tam是什么意思啊(TAM是什么意思) 手把手教你如何用百度網(wǎng)盤下載BT種子文件(百度網(wǎng)盤如何使用種子文件下載) 采訪問題怎么寫(采訪問題) 英雄聯(lián)盟如何參與MSI半決賽活動(dòng)(英雄聯(lián)盟msi比賽賽程) 架立筋圖片示意圖(架立筋圖片) 最右如何添加交友卡(最右怎么看交友卡) 鵝口瘡該如何治療(鵝口瘡該如何治療才能好) 海賊王克比頭像(海賊王克比) 怎么在機(jī)蜜租一輛特斯拉汽車?(如何租特斯拉) IE瀏覽器出錯(cuò)崩潰怎么辦?(電腦提示ie瀏覽器崩潰是什么意思) 情人節(jié)送男朋友禮物嗎(情人節(jié)送男朋友禮物) AutoCAD中制作等高線地形圖(cad中怎么畫等高線地形圖)
您的位置:首頁 >百科精選 >

函數(shù)指針和指針函數(shù)有啥區(qū)別呢(函數(shù)指針和指針函數(shù)有啥區(qū)別)

導(dǎo)讀 關(guān)于函數(shù)指針和指針函數(shù)有啥區(qū)別呢,函數(shù)指針和指針函數(shù)有啥區(qū)別這個(gè)問題很多朋友還不知道,今天小六來為大家解答以上的問題,現(xiàn)在讓我們一

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

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

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

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

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

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

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

7、 3、通過函數(shù)指針調(diào)用函數(shù) 函數(shù)指針是通過函數(shù)名及有關(guān)參數(shù)進(jìn)行調(diào)用的。

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

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

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

11、 由于函數(shù)指針指向存儲(chǔ)區(qū)中的某個(gè)函數(shù),因此可以通過函數(shù)指針調(diào)用相應(yīng)的函數(shù)。

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

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

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

15、 例如: (*f)(x);(x必須先賦值) 【例】任意輸入n個(gè)數(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調(diào)用函數(shù)f */ } printf("The Max Number is:%d",a) } f(int x,int y) { int z; z=(x>y)?x:y; return(z); } 運(yùn)行結(jié)果為: 343 -45 4389 4235 1 -534 988 555 789↙ The Max Number is:4389 二、【指針函數(shù)】 一個(gè)函數(shù)不僅可以帶回一個(gè)整型數(shù)據(jù)的值,字符類型值和實(shí)型類型的值,還可以帶回指針類型的數(shù)據(jù),使其指向某個(gè)地址單元。

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

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

19、 如:char *ch();表示的就是一個(gè)返回字符型指針的函數(shù),請(qǐng)看下面的例題: 【例】將字符串1(str1)復(fù)制到字符串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ù)指針是一個(gè)指向函數(shù)的指針,而指針函數(shù)只是說明他是一個(gè)返回值為指針的函數(shù), 函數(shù)指針可以用來指向一個(gè)函數(shù)。

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

標(biāo)簽:

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

最新文章