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