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