函數(shù)指針是指向函數(shù)的指針變量。 因而“函數(shù)指針”本身首先應(yīng)是指針變量,只不過(guò)該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。
成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供黃浦網(wǎng)站建設(shè)、黃浦做網(wǎng)站、黃浦網(wǎng)站設(shè)計(jì)、黃浦網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、黃浦企業(yè)網(wǎng)站模板建站服務(wù),10余年黃浦做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
函數(shù)指針有兩個(gè)用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。
函數(shù)指針的聲明方法為:
返回值類型 ( *?指針變量名) ([形參列表]);
如:
int func(int x); /* 聲明一個(gè)函數(shù) */
int (*f) (int x); /* 聲明一個(gè)函數(shù)指針 */
f=func; /* 將func函數(shù)的首地址賦給指針f */
或者使用下面的方法將函數(shù)地址賦給函數(shù)指針:
f = func;
賦值時(shí)函數(shù)func不帶括號(hào),也不帶參數(shù),由于func代表函數(shù)的首地址,因此經(jīng)過(guò)賦值以后,指針f就指向函數(shù)func(x)的代碼的首地址。
下面的程序說(shuō)明了函數(shù)指針調(diào)用函數(shù)的方法:
#includestdio.h
int?max(int?x,int?y){return?(xy??x:y);}
int?main()
{
int?(*ptr)(int,?int);
int?a,?b,?c;
ptr?=?max;
scanf("%d%d",?a,?b);
c?=?(*ptr)(a,b);
printf("a=%d,?b=%d,?max=%d",?a,?b,?c);
return?0;
}
在C語(yǔ)言中指針函數(shù)和函數(shù)指針是兩個(gè)不同的概念,不能混淆。
指針函數(shù)本質(zhì)上是函數(shù),是一個(gè)返回類型為指針的函數(shù),如:
int* max(int *array,int n)
{
//找最大值的地址
return 最大值的地址;
}
max就是一個(gè)指針函數(shù)。
而函數(shù)指針本質(zhì)上是指針,是指向函數(shù)的指針,如:
int (*funp)(int a,int b);
funp就是一個(gè)函數(shù)指針,可以用它指向一個(gè)返回類型為int、有兩個(gè)int類型的參數(shù)的函數(shù)。
1.如果聲明函數(shù)時(shí)指定的返回值類型與return語(yǔ)句實(shí)際返回的數(shù)據(jù)類型不匹配,那么此時(shí)將以聲明函數(shù)時(shí)指定的返回值的類型為準(zhǔn),系統(tǒng)會(huì)自動(dòng)轉(zhuǎn)換.
2.Objective-C里函數(shù)的參數(shù)傳遞傳遞方式只有一種:值傳遞.所謂的值傳遞就是將參數(shù)的指針地址拷貝一份副本(指針)傳入函數(shù),這個(gè)副本也是指針,副本的指針指向的地址是存儲(chǔ)內(nèi)容的地址,貌似是指針傳遞,但是其本質(zhì)是值傳遞
(參數(shù)有兩個(gè)地址,一個(gè)是自己的存儲(chǔ)地址,一個(gè)是存儲(chǔ)內(nèi)容的地址,拷貝的意思就是生成一個(gè)新的地址,但是存儲(chǔ)內(nèi)容的地址沒(méi)改變,只不過(guò)之前只有一個(gè)指針指向,現(xiàn)在是兩個(gè)指針指向存儲(chǔ)的位置)
3.C語(yǔ)言中數(shù)組當(dāng)做參數(shù)傳入函數(shù)中傳遞的是指針,該指針指向數(shù)組的首地址,操作的時(shí)候改變的是指針指向的存儲(chǔ)數(shù)據(jù),因此函數(shù)中改變數(shù)組元素會(huì)對(duì)數(shù)組本身有影響,但是在OC中這一理論不通用.
4.內(nèi)部函數(shù),定義函數(shù)時(shí)使用static修飾,該函數(shù)只能被當(dāng)前源文件訪問(wèn)
5.外部函數(shù),定義函數(shù)是使用extern修飾,或者不使用修飾符,該函數(shù)可以被任意的源文件使用
1.局部變量,在函數(shù)內(nèi)定義的變量為局部變量.在函數(shù)內(nèi)部可以使用extern修飾局部變量,讓其變成全局變量,這個(gè)變量可以被任意的源程序文件訪問(wèn)
2.全局變量,在函數(shù)外定義的變量默認(rèn)不需要使用修飾詞或者使用extern修飾,如果希望全局變量的作用域限制在該源程序使用,即只能在本文件中使用則可以使用static修飾該全局變量.
1.不帶參宏定義 #define 宏名稱 宏代表的內(nèi)容
2.帶參數(shù)的宏定義 #define 宏名稱(參數(shù)列表) 字符串(需要操作的內(nèi)容)
3.#ifdef,#ifndef,#else,#endif執(zhí)行條件編譯,這幾種方式的條件只能是宏
4.#if,#elif,#else,#endif執(zhí)行條件編譯,這個(gè)判斷條件不一定是宏,可以使指定的表達(dá)式
1.指針的概念
2.指針與數(shù)組
3.指向指針變量的指針
新聞名稱:c語(yǔ)言全局函數(shù)指針 全局定義c語(yǔ)言
文章源于:http://jinyejixie.com/article46/ddogieg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、網(wǎng)站收錄、App開(kāi)發(fā)、網(wǎng)頁(yè)設(shè)計(jì)公司、定制開(kāi)發(fā)、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)