指針就是地址,另外還有指針變量,也就是存放地址的變量。
創(chuàng)新互聯(lián)長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為洪洞企業(yè)提供專業(yè)的成都網(wǎng)站建設(shè)、成都網(wǎng)站制作,洪洞網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
平時(shí)使用的別的變量(指的指針變量以外的變量),就是用變量名字代表了它所在的空間,本質(zhì)還是到這個(gè)地址去訪問;而用指針變量訪問,就是直接訪問這個(gè)空間了,因此更高效。
C語言中函數(shù)指針與普通指針沒什么差別,只是指向的內(nèi)容不同而已。主要作用:
1、實(shí)現(xiàn)面向?qū)ο缶幊讨械亩鄳B(tài)性。
2、回調(diào)函數(shù)。
函數(shù)指針是指向函數(shù)的指針變量。因此“函數(shù)指針”本身首先應(yīng)是指針變量,只不過該指針變量指向函數(shù)。這正如用指針變量可指向整型變量、字符型、數(shù)組一樣,這里是指向函數(shù)。
C在編譯時(shí),每一個(gè)函數(shù)都有一個(gè)入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂?。有了指向函?shù)的指針變量后,可用該指針變量調(diào)用函數(shù),就如同用指針變量可引用其他類型變量一樣,在這些概念上是大體一致的。
函數(shù)指針有兩個(gè)用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。
簡單地說指針就是指向變量和對(duì)象的地址。
指針的用途非常廣泛,比如如果你想通過函數(shù)改變一個(gè)變量的值,就得用指針而不能用值傳遞。還有在很多時(shí)候變量,特別是對(duì)象的數(shù)據(jù)量實(shí)在太大,程序員就會(huì)用指針來做形參,只需要傳遞一個(gè)地址就行,大大提高了效率。
以上還只是指針的初步應(yīng)用,隨著你在C語言學(xué)習(xí)上的逐步深入,你會(huì)發(fā)現(xiàn)更多的用途的。
函數(shù)指針一般用來做回調(diào)的,一般多線程用的多,因?yàn)榫€程之間,??臻g不一樣。還有就是封裝好的程序,做回調(diào)的,比如我寫了一段程序,想要給你用,如果我內(nèi)部沒有回調(diào),你就要改動(dòng)我的程序。但我這樣寫,我的執(zhí)行過程是123,二這個(gè)步驟,我用函數(shù)指針封裝起來,如果等于空就不執(zhí)行,然后你來用,只需要把我的函數(shù)指針,指向你的函數(shù),我這個(gè)程序是不是就可以不改代碼,然后把你的代碼加到中間了,所以,函數(shù)指針除了線程中,通過傳遞消息,根據(jù)消息相互調(diào)用,之外,也是封裝的一大利器,如果管理的好,還可以減少代碼雍種,寫的好,增加可讀性。當(dāng)然你可以不用,也能開發(fā)同樣效果的東西,難度要大很多,特別是代碼到千行以上
函數(shù)的調(diào)用必須是已知文件名的。如果你寫一個(gè)系統(tǒng)的某一層,不知道其他層的內(nèi)部情況,這時(shí)候用指針傳遞函數(shù)最合適。還有,結(jié)構(gòu)體里包含指向函數(shù)的指針,就相當(dāng)于一個(gè)簡單的“對(duì)象”了。
看看linux內(nèi)核里各接口的定義。函數(shù)指針的使用使的內(nèi)核可以很多人同時(shí)開發(fā),并且大家只需要知道相應(yīng)的接口就可以了。這套框架,離不開函數(shù)指針。
很多情況可以用到。這需要在編程過程中形成一種思維。
如 將一個(gè)結(jié)構(gòu)體傳遞給一個(gè)函數(shù)。
如果不用指針,傳送速度慢,如果通過指針,只要傳遞一個(gè)地址。
struct example
{
int i;
int j;
int f;
char a[1024];
};
void main()
{
struct example ex;
fun(ex);//將結(jié)構(gòu)體ex的地址傳遞給函數(shù)fun
}
fun(struct example *p)
{
}
分享名稱:為什么c語言函數(shù)要用指針 為什么要使用函數(shù)指針
當(dāng)前鏈接:http://jinyejixie.com/article12/doscodc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、全網(wǎng)營銷推廣、網(wǎng)站策劃、用戶體驗(yàn)、、手機(jī)網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)