糯米文學吧

位置:首頁 > 計算機 > C語言

C語言函數指針變量

C語言4.64K

導語:在C語言中規定,一個函數總是佔用一段連續的內存區, 而函數名就是該函數所佔內存區的首地址。 這就是函數指針變量。下面是相關介紹,僅供參考!

C語言函數指針變量

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); 調用函數的一般形式為: (*指針變量名) (實參表)使用函數指針變量還應注意以下兩點:

a. 函數指針變量不能進行算術運算,這是與數組指針變量不同的。數組指針變量加減一個整數可使指針移動指向後面或前面的數組元素,而函數指針的移動是毫無意義的。

b. 函數調用中"(*指針變量名)"的兩邊的括號不可少,其中的*不應該理解為求值運算,在此處它只是一種表示符號。