函数指针 如:void (*oper)(ChainBinTreee *p)
生活随笔
收集整理的這篇文章主要介紹了
函数指针 如:void (*oper)(ChainBinTreee *p)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在C語言中,一個函數總是占用一段連續的內存區,而函數名就是該函數所占內存區的首地址。我們可以把函數的這個首地址(或稱入口地址)賦予一個指針變量,使該指針變量指向該函數。然后通過指針變量就可以找到并調用這個函數。我們把這種指向函數的指針變量稱為“函數指針變量”。
函數指針變量定義的一般形式為:
類型說明符 (*指針變量名)();
其中“類型說明符”表示被指函數的返回值的類型。“(* 指針變量名)”表示“*”后面的變量是定義的指針變量。最后的空括號表示指針變量所指的是一個函數。
例如:
int (*pf)();
表示pf是一個指向函數入口的指針變量,該函數的返回值(函數值)是整型。
【例】本例用來說明用指針形式實現對函數調用的方法。
int max(int a,int b){
if(a>b)return a;
else return b;
}
main(){
int max(int a,int b);
int(*pmax)();
int x,y,z;
pmax=max;
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
z=(*pmax)(x,y);
printf("maxmum=%d",z);
}
從上述程序可以看出用,函數指針變量形式調用函數的步驟如下:
1) 先定義函數指針變量,如后一程序中第9行 int (*pmax)();定義 pmax為函數指針變量。
2) 把被調函數的入口地址(函數名)賦予該函數指針變量,如程序中第11行 pmax=max;
3) 用函數指針變量形式調用函數,如程序第14行 z=(*pmax)(x,y);
4) 調用函數的一般形式為:
(*指針變量名) (實參表)
使用函數指針變量還應注意以下兩點:
a) 函數指針變量不能進行算術運算,這是與數組指針變量不同的。數組指針變量加減一個整數可使指針移動指向后面或前面的數組元素,而函數指針的移動是毫無意義的。
b) 函數調用中"(*指針變量名)"的兩邊的括號不可少,其中的*不應該理解為求值運算,在此處它只是一種表示符號。??
函數指針變量定義的一般形式為:
類型說明符 (*指針變量名)();
其中“類型說明符”表示被指函數的返回值的類型。“(* 指針變量名)”表示“*”后面的變量是定義的指針變量。最后的空括號表示指針變量所指的是一個函數。
例如:
int (*pf)();
表示pf是一個指向函數入口的指針變量,該函數的返回值(函數值)是整型。
【例】本例用來說明用指針形式實現對函數調用的方法。
int max(int a,int b){
if(a>b)return a;
else return b;
}
main(){
int max(int a,int b);
int(*pmax)();
int x,y,z;
pmax=max;
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
z=(*pmax)(x,y);
printf("maxmum=%d",z);
}
從上述程序可以看出用,函數指針變量形式調用函數的步驟如下:
1) 先定義函數指針變量,如后一程序中第9行 int (*pmax)();定義 pmax為函數指針變量。
2) 把被調函數的入口地址(函數名)賦予該函數指針變量,如程序中第11行 pmax=max;
3) 用函數指針變量形式調用函數,如程序第14行 z=(*pmax)(x,y);
4) 調用函數的一般形式為:
(*指針變量名) (實參表)
使用函數指針變量還應注意以下兩點:
a) 函數指針變量不能進行算術運算,這是與數組指針變量不同的。數組指針變量加減一個整數可使指針移動指向后面或前面的數組元素,而函數指針的移動是毫無意義的。
b) 函數調用中"(*指針變量名)"的兩邊的括號不可少,其中的*不應該理解為求值運算,在此處它只是一種表示符號。??
在《C陷阱與缺陷》中有這樣一段描述:
fp是一個函數指針,那么*fp就是該指針所指向的函數,所以(*fp)()就是調用該函數的方式。ANSI C標準允許程序員將上式簡寫為fp(),但是一定要記住這種寫法只是一種簡寫形式。
轉載于:https://www.cnblogs.com/rednodel/p/4047660.html
總結
以上是生活随笔為你收集整理的函数指针 如:void (*oper)(ChainBinTreee *p)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: javascript高级程序设计-Arr
- 下一篇: jquery filter和not