C語言函數(shù)指針詳解
前言
? 都知道c語言有各種類型的指針,但是大家很少接觸函數(shù)指針,其實(shí)較粗略的說,C++的類中應(yīng)該相當(dāng)于C語言中含有函數(shù)指針的結(jié)構(gòu)體
定義方法
? 對于一個函數(shù)如下:
<返回值類型> func (<參數(shù)1類型> <參數(shù)1>,...)
? 其函數(shù)指針的格式為
<返回值類型> (*<指針名>) (<參數(shù)1類型> <參數(shù)1>,...)
? 如下是實(shí)例:
? 定義如下一個函數(shù)指針
int main(int argc ,char* argv[]){
double (*a)(int n1,int n1) = NULL;
}
這里a的含義是指向參數(shù)為整型n1,整型n2,返回值為double的函數(shù)的指針,實(shí)操中可以省略參數(shù)名,只留下參數(shù)類型,如下:
double (*a)(int ,int ) = NULL;
? 而如下是指向返回值為指針類型的函數(shù):
double* (*a)(double* ,int ) = foo;
賦值方法
? 函數(shù)名其實(shí)就是函數(shù)的地址,我們只需要將這個地址賦值給函數(shù)指針即可,如下
#include<stdio.h>
double* foo(double *a ,int b){
return a;
}
int main(int argc ,char* argv[]){
double* (*a)(double* ,int ) = foo;
}
? 通過調(diào)試,我們可以輕松看到foo和a的值:

用途
函數(shù)指針a可以作為另外一個函數(shù)b的變量,實(shí)現(xiàn)在函數(shù)b中運(yùn)行函數(shù)a
函數(shù)指針可以作為結(jié)構(gòu)體的一個域,就像C++中的類函數(shù)一樣
總結(jié)
到此這篇關(guān)于C語言函數(shù)指針詳解的文章就介紹到這了,更多相關(guān)C語言函數(shù)指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
約瑟夫環(huán)問題(數(shù)組法)c語言實(shí)現(xiàn)
這篇文章主要介紹了約瑟夫環(huán)問題(數(shù)組法)c語言實(shí)現(xiàn),有需要的朋友可以參考一下2013-12-12
斐波那契數(shù)列 優(yōu)化矩陣求法實(shí)例
斐波那契數(shù)列 優(yōu)化矩陣求法實(shí)例,需要的朋友可以參考一下2013-03-03
C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別
這篇文章主要介紹了C++ 中pragma once 與 #ifndef _XXX_H_ #define _XXX_H_的區(qū)別的相關(guān)資料,需要的朋友可以參考下2017-04-04
C語言進(jìn)階教程之字符串&內(nèi)存函數(shù)
對于字符,在計(jì)算機(jī)內(nèi)部都是用數(shù)字(字符編碼)來表示的,而字符串是“字符連續(xù)排列”的一種表現(xiàn),這篇文章主要給大家介紹了關(guān)于C語言進(jìn)階教程之字符串&內(nèi)存函數(shù)的相關(guān)資料,需要的朋友可以參考下2021-09-09
C語言變長數(shù)組 struct中char data[0]的用法詳解
下面小編就為大家?guī)硪黄狢語言變長數(shù)組 struct中char data[0]的用法詳解。小編覺得挺不錯的現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-01-01
C++ OpenCV單峰三角閾值法Thresh_Unimodal詳解
本文主要介紹了適合當(dāng)圖像的直方圖具有明顯單峰特征時(shí)使用,結(jié)合了三角法的原理而設(shè)計(jì)的圖像分割方法,感興趣的小伙伴可以了解一下2021-12-12

