C++ Function Pointer用法及代碼示例- 純淨天空

文章推薦指數: 80 %
投票人數:10人

C++ Function Pointer用法及代碼示例. 我們知道指針是用來指向一些變量的;類似地,函數指針是用於指向函數的指針。

它本質上用於存儲函數的地址。

當前位置:首頁>>代碼示例 >>用法及示例精選 >>正文 我們知道指針是用來指向一些變量的;類似地,函數指針是用於指向函數的指針。

它本質上用於存儲函數的地址。

我們可以通過使用函數指針來調用函數,也可以將指針作為參數傳遞給另一個函數。

它們主要用於event-driven應用程序、回調,甚至用於將函數存儲在數組中。

函數的地址是什麽? 計算機隻理解低級語言,即二進製形式。

我們用C++編寫的程序總是用高級語言編寫的,所以為了將程序轉換成二進製形式,我們使用編譯器。

編譯器是將源代碼轉換為可執行文件的程序。

此可執行文件存儲在RAM中。

CPU從main()方法開始執行,它讀取RAM中的副本而不是原始文件。

所有的函數和機器碼指令都是數據。

這個數據是一堆字節,所有這些字節在RAM中都有一些地址。

函數指針包含函數第一條指令的RAM地址。

聲明的語法 以下是函數指針聲明的語法: int(*FuncPtr)(int,int); 上麵的語法是函數聲明。

由於函數並不像變量那樣簡單,但C++是類型安全的,因此函數指針具有返回類型和參數列表。

在上麵的語法中,我們首先提供返回類型,然後是指針的名稱,即FuncPtr,它被方括號包圍,前麵是指針符號,即(*)。

在此之後,我們提供了參數列表(int,int)。

上麵的函數指針可以指向任何接受兩個整數參數並返回整數類型值的函數。

函數地址 我們可以很容易地得到一個函數的地址。

我們隻需要提到函數的名字,我們不需要調用函數。

讓我們通過一個例子來說明。

#include usingnamespacestd; intmain() { std::cout< usingnamespacestd; intadd(inta,intb) { returna+b; } intmain() { int(*funcptr)(int,int);//functionpointerdeclaration funcptr=add;//funcptrispointingtotheaddfunction intsum=funcptr(5,5); std::cout< usingnamespacestd; voidprintname(char*name) { std::cout<>s; cout< usingnamespacestd; voidfunc1() { cout<



請為這篇文章評分?