函式指標用法說明
2011-06-07 10:55
函式指標是指向函式的指標變數。 因而「函式指標」本身首先應是指標變數,只不過該指標變數指向函式。這正如用指標變數可指向整型變數、字元型、陣列一樣,這裡是指向函式。如前所述,c在編譯時,每乙個函式都有乙個入口位址,該入口位址就是函式指標所指向的位址。有了指向函式的指標變數後,可用該指標變數呼叫函式,就如同用指標變數可引用其他型別變數一樣,在這些概念上是一致的。函式指標有兩個用途:呼叫函式和做函式的引數。
函式指標的宣告方法為:
資料型別標誌符 (指標變數名) (形參列表);
注1:「函式型別」說明函式的返回型別,由於「()」的優先順序高於「*」,所以指標變數名外的括號必不可少,後面的「形參列表」表示指標變數指向的函式所帶的引數列表。例如:
int func(int x); /* 宣告乙個函式 */
int (*f) (int x); /* 宣告乙個函式指標 */
f=func; /* 將func函式的首位址賦給指標f */
賦值時函式func不帶括號,也不帶引數,由於func代表函式的首位址,因此經過賦值以後,指標f就指向函式func(x)的**的首位址。
注2:函式括號中的形參可有可無,視情況而定。
下面的程式說明了函式指標呼叫函式的方法:
例一、#include
int max(int x,int y)
void main()
ptr是指向函式的指標變數,所以可把函式max()賦給ptr作為ptr的值,即把max()的入口位址賦給ptr,以後就可以用ptr來呼叫該函式,實際上ptr和max都指向同乙個入口位址,不同就是ptr是乙個指標變數,不像函式名稱那樣是死的,它可以指向任何函式,就看你想怎麼做了。在程式中把哪個函式的位址賦給它,它就指向哪個函式。而後用指標變數呼叫它,因此可以先後指向不同的函式。不過注意,指向函式的指標變數沒有++和--運算,用時要小心。
不過,在某些
編譯器中這是不能通過的。這個例子的補充如下。
應該是這樣的:
1.定義函式指標型別:
typedef int (*fun_ptr)(int,int);
2.申明變數,賦值:
fun_ptr max_func=max;
也就是說,賦給函式指標的函式應該和函式指標所指的函式原型是一致的。
例二、#include
void filefunc()
void editfunc()
void main()
指標函式和函式指標的區別 1,這兩個概念都是簡稱,指標函式是指帶指標的函式,即本質是乙個函式。我們知道函式都又有返回型別(如果不返回值,則為無值型),只不過指標函式返回型別是某一型別的指標。
其定義格式如下所示:
返回型別識別符號 *返回名稱(形式參數列)
返回型別可以是任何基本型別和復合型別。返回指標的函式的用途十分廣泛。事實上,每乙個函式,即使它不帶有返回某種型別的指標,它本身都有乙個入口位址,該位址相當於乙個指標。比如函式返回乙個整型值,實際上也相當於返回乙個指標變數的值,不過這時的變數是函式本身而已,而整個函式相當於乙個「變數」。
2,「函式指標」是指向函式的指標變數,因而「函式指標」本身首先應是指標變數,只不過該指標變數指向函式。這正如用指標變數可指向整型變數、字元型、陣列一樣,這裡是指向函式。如前所述,c在編譯時,每乙個函式都有乙個入口位址,該入口位址就是函式指標所指向的位址。有了指向函式的指標變數後,可用該指標變數呼叫函式,就如同用指標變數可引用其他型別變數一樣,在這些概念上一致的。函式指標有兩個用途:呼叫函式和做函式的引數。
關於函式指標陣列的定義方法,有兩種:一種是標準的方法;一種是矇騙法。
第一種,標準方法:
第二種,矇騙法:
函式名相當於乙個指向其函式入口指標常量。 那麼既然函式名是乙個指標常量,那麼就可以對其進行一些相應的處理,如強制型別轉換。
那麼我們就可以把這個位址放在乙個整形指標陣列中,然後作為函式指標呼叫即可。
完整例子:
#include "stdio.h"
int add1(int a1,int b1);
int add2(int a2,int b2);
void main()
int add1(int a1,int b1)
int add2(int a2,int b2)
Python sqrt 函式用法說明
函式 sqrt 返回 x 的平方根 x 0 語法 import math math.sqrt x 注意 此函式不可直接訪問,需要匯入math模組,然後需要使用math靜www.cppcns.com態物件呼叫此函式。引數 x 數值表示式 返回結果是浮點數。import math this will i...
C new 用法說明
int a newint 這句相當於 int a 0 a 是空 int a new int 20 這句的本質是指標指向乙個 int20 的空間 在堆裡 這個與class 類似的。1 new運算子 用於建立物件和呼叫建構函式。這種大家都比較熟悉,沒什麼好說的了。2 new修飾符 在用作修飾符時,new...
SQLSERVER DBCC 用法說明
一 dbcc 幫助類命令 dbcc help 查詢所有的dbcc命令 dbcc help 命令 查詢指定的dbcc命令的語法說明 dbcc useroptions 返回當前連線的活動 設定 的set選項 二 dbcc 檢查驗證類命令 dbcc checkalloc 資料庫名稱 檢查指定資料庫的磁碟空...