指向成员函数的指针有什么用_指针函数,函数指针,有点懵圈了?你能分清楚吗...
指針函數(shù)和函數(shù)指針到底怎么區(qū)分?
1、前言
數(shù)組、指針,這兩個(gè)詞結(jié)合的順序不同,其意義也不同。
同樣的,函數(shù)、指針這兩個(gè)詞結(jié)合的順序不同其意義也不同,即指針函數(shù)與函數(shù)指針的意義不同。
2、指針函數(shù)
指針函數(shù)的本質(zhì)是一個(gè)函數(shù),其返回值是一個(gè)指針。示例如下:
int *pfun(int, int);由于“ * ”的優(yōu)先級低于“()”的優(yōu)先級,因而pfun首先和后面的“()”結(jié)合,也就意味著,pfun是一個(gè)函數(shù)。即:int *(pfun(int, int));
接著再和前面的“*”結(jié)合,說明這個(gè)函數(shù)的返回值是一個(gè)指針。由于前面還有一個(gè)int,也就是說,pfun是一個(gè)返回值為整型指針的函數(shù)。
指針函數(shù)示例程序如下:
程序運(yùn)行結(jié)果如下:
主函數(shù)中,把一個(gè)數(shù)組的首地址與數(shù)組長度作為實(shí)參傳入指針函數(shù)pfun里,把指針函數(shù)的返回值(即指向數(shù)組的指針)賦給整形指針p。最后使用指針p來遍歷數(shù)組元素并打印輸出。
3、函數(shù)指針
函數(shù)指針其本質(zhì)是一個(gè)指針變量,該指針變量指向一個(gè)函數(shù)。C程序在編譯時(shí),每一個(gè)函數(shù)都有一個(gè)入口地址,該入口地址就是函數(shù)指針?biāo)赶虻牡刂?。函?shù)指針示例:
func 是一個(gè)函數(shù)名,那么func與&func都表示的是函數(shù)的入口地址。同樣的,在函數(shù)的調(diào)用中可以使用:方式一:func(),也可以使用方式二:(*fun)()。這兩種調(diào)用方式是等價(jià)的,只是我們平時(shí)大多都習(xí)慣用方式一的調(diào)用方法。
至于為什么func與&func的含義相同:
對于函數(shù)func來說,函數(shù)的名稱就是函數(shù)代碼區(qū)的常量,對它取地址(&func)可以得到函數(shù)代碼區(qū)的地址,同時(shí),fun本身也可以視為函數(shù)代碼區(qū)的地址。因此,函數(shù)名稱和對其取地址其含義是相同的。
函數(shù)指針示例程序如下:
程序運(yùn)行結(jié)果如下:
以上就是關(guān)于指針函數(shù)與函數(shù)指針的簡單區(qū)分。其中,函數(shù)指針廣泛應(yīng)用于嵌入式軟件開發(fā)中,其常用的兩個(gè)用途:調(diào)用函數(shù)和做函數(shù)的參數(shù)。
對于熱愛編程的人來說,有一群一起學(xué)習(xí)一起解答的小伙伴很重要!筆者有一個(gè)編程零基礎(chǔ)入門學(xué)習(xí)交流俱樂部(群),還有學(xué)習(xí)視頻文件,歡迎初學(xué)者和正在進(jìn)階中的小伙伴們!
總結(jié)
以上是生活随笔為你收集整理的指向成员函数的指针有什么用_指针函数,函数指针,有点懵圈了?你能分清楚吗...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: micropython安装第三方库_安装
- 下一篇: 怎么确定迭代器后面还有至少两个值_如何理