1.函式指標
為什麼要使用函式指標?
在同乙個函式中通過使用相同的形參在不同的時間使用產生不同的效果。
void
function
(int a)
;
則function是該函式的位址。
首先宣告函式的原型,然後用(*p)替代函式名,這樣p就是這類函式的指標。例如:
「宣告」函式原型(無須形參):
int
number
(int
,int);
// 宣告的時候可以只寫型別,但是定義的時候要寫形參(若要用到形參)
「只有型別沒有引數名的形參也叫啞元」
函式指標宣告:
int
(*p)
(int
,int);
//函式指標變數是p;
2.如何使用函式指標呼叫函式?
double
pam(
int)
;//宣告函式原型
double
(*pa)
(int);
//宣告指向上面函式原型的指標
pa = pam;
//向函式指標賦值
double x =
(*pa)(5
);//使用pa呼叫函式pam,傳遞引數5,定義變數x接收函式返回值
c++中除了這樣使用:double x = (*pa)(5);
也允許像函式名一樣使用函式指標:double x = pa(5);
3. 使用函式指標呼叫函式例項
//例項:
#include
using namespace std;
//宣告函式原型,未加上形參
//void func_add(int, int);
//void func_sub(int, int);
//宣告乙個指向該型別的函式指標
void
func_add
(int num1,
int num2)
void
func_sub
(int num1,
int num2)
//函式指標呼叫
void
func
(void
(*p)
(int
,int),
int num1,
int num2)
intmain
(void)/*
void testfun(int, void *);
int main(int argc, char *ar**)
void testfun(int, void *)
c++編譯器會對函式名進行名字修飾(name mangling),名字修飾是函式名和引數型別的組合,
編譯器以此來區分過載函式,所以在宣告和定義函式的時候可以不需要形參(當然前提是你的函式體中沒有利用到形參)。
以上**之所以能通過編譯,但沒有執行,是因為編譯器在對該段**進行詞法分析和語法分析的時候,
並沒有發現錯誤,它符合文法規則,但在語義分析的時候編譯器就發現testfun;
這句沒有任何語義,就直接略去了,並不會為它生成中間**,
*/
參考鏈結: c c 函式指標詳解
今天我們要介紹的是函式指標。內容由以下3部分組成 函式指標的概念,為了面試時能夠說出來。函式指標的用法 當然是為工作用到嘍 函式指標的例項,用一些練習來加深印象。經典面試題 函式指標和指標函式的區別 好 開始!函式指標的概念 1.1 函式指標 是指向函式的指標變數 在程式執行中,函式是程式演算法指令...
c c 函式指標的用法
鏈結2 1.定義 每乙個函式都占用一段記憶體單元,它們有乙個起始位址,指向函式入口位址的指標稱為函式指標。2.語法 指向函式的指標變數的一般定義形式為 資料型別 指標變數名 參數列 3.說明 1 函式指標的定義形式中的資料型別是指函式的返回值的型別。2 區分下面兩個語句 int p int a,in...
C C 函式指標的用法
一 函式指標介紹 函式指標指向某種特定型別,函式的型別由其引數及返回型別共同決定,與函式名無關。舉例如下 int add int nleft,int nright 函式定義 該函式型別為int int,int 要想宣告乙個指向該類函式的指標,只需用指標替換函式名即可 int pf int,int 未...