程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> C語言基礎知識 >> C語言函數指針(指向函數的指針)

C語言函數指針(指向函數的指針)

編輯:C語言基礎知識
一個函數總是占用一段連續的內存區域,函數名在表達式中有時也會被轉換為該函數所在內存區域的首地址,這和數組名非常類似。我們可以把函數的這個首地址(或稱入口地址)賦予一個指針變量,使指針變量指向函數所在的內存區域,然後通過指針變量就可以找到並調用該函數。這種指針就是函數指針。

函數指針的定義形式為:

returnType (*pointerName)(param list);

returnType 為函數返回值類型,pointerNmae 為指針名稱,param list 為函數參數列表。參數列表中可以同時給出參數的類型和名稱,也可以只給出參數的類型,省略參數的名稱,這一點和函數原型非常類似。

注意( )的優先級高於*,第一個括號不能省略,如果寫作returnType *pointerName(param list);就成了函數原型,它表明函數的返回值類型為returnType *

【實例】用指針來實現對函數的調用。
#include <stdio.h>

//返回兩個數中較大的一個
int max(int a, int b){
    return a>b ? a : b;
}

int main(){
    int x, y, maxval;
    //定義函數指針
    int (*pmax)(int, int) = max;  //也可以寫作int (*pmax)(int a, int b)
    printf("Input two numbers:");
    scanf("%d %d", &x, &y);
    maxval = (*pmax)(x, y);
    printf("Max value: %d\n", maxval);

    return 0;
}
運行結果:
Input two numbers:10 50↙
Max value: 50

第 14 行代碼對函數進行了調用。pmax 是一個函數指針,在前面加 * 就表示對它指向的函數進行調用。注意( )的優先級高於*,第一個括號不能省略。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved