C語言函數指針詳解
前言
都知道c語言有各種類型的指針,但是大傢很少接觸函數指針,其實較粗略的說,C++的類中應該相當於C語言中含有函數指針的結構體
定義方法
對於一個函數如下:
<返回值類型> func (<參數1類型> <參數1>,...)
其函數指針的格式為
<返回值類型> (*<指針名>) (<參數1類型> <參數1>,...)
如下是實例:
定義如下一個函數指針
int main(int argc ,char* argv[]){ double (*a)(int n1,int n1) = NULL; }
這裡a的含義是指向參數為整型n1,整型n2,返回值為double的函數的指針,實操中可以省略參數名,隻留下參數類型,如下:
double (*a)(int ,int ) = NULL;
而如下是指向返回值為指針類型的函數:
double* (*a)(double* ,int ) = foo;
賦值方法
函數名其實就是函數的地址,我們隻需要將這個地址賦值給函數指針即可,如下
#include<stdio.h> double* foo(double *a ,int b){ return a; } int main(int argc ,char* argv[]){ double* (*a)(double* ,int ) = foo; }
通過調試,我們可以輕松看到foo和a的值:
用途
函數指針a可以作為另外一個函數b的變量,實現在函數b中運行函數a
函數指針可以作為結構體的一個域,就像C++中的類函數一樣
總結
到此這篇關於C語言函數指針詳解的文章就介紹到這瞭,更多相關C語言函數指針內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!