亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++中函數指針詳解及代碼分享

2020-05-23 13:38:34
字體:
來源:轉載
供稿:網友

函數指針

函數存放在內存的代碼區域內,它們同樣有地址。如果我們有一個int test(int a)的函數,那么,它的地址就是函數的名字,如同數組的名字就是數組的起始地址。

1、函數指針的定義方式:data_types (*func_pointer)( data_types arg1, data_types arg2, ...,data_types argn);
c語言函數指針的定義形式:返回類型 (*函數指針名稱)(參數類型,參數類型,參數類型,…);
c++函數指針的定義形式:返回類型 (類名稱::*函數成員名稱)(參數類型,參數類型,參數類型,….);   

例如: int (*fp)(int a); //這里就定義了一個指向函數(這個函數參數僅僅為一個int類型,函數返回值是int類型)的指針fp。
類成員函數指針與普通函數指針不是一碼事。前者要用.*與->*運算符來使用,而后者可以用*運算符(稱為“解引用”dereference,或稱“間址”indirection)。

普通函數指針實際上保存的是函數體的開始地址,因此也稱“代碼指針”,以區別于C/C++最常用的數據指針。

而類成員函數指針就不僅僅是類成員函數的內存起始地址,還需要能解決因為C++的多重繼承、虛繼承而帶來的類實例地址的調整問題,所以類成員函數指針在調用的時候一定要傳入類實例對象。

函數指針示例

#include <stdio.h>#include <stdlib.h>int fun1(){  printf("this is fun1 call/n");  return 1;}void fun2(int k, char c){  printf("this is fun2 call:%d %c/n", k, c);}int main(){  int (*pfun1)() = NULL;  void (*pfun2)(int, char) = NULL;  int a,b;  pfun1 = fun1; //第一種賦值方法  a = pfun1(); //第一種調用方法(推薦)  printf("%d/n",a);  b = (*pfun1)();//第二種調用方法  printf("%d/n",b);  pfun2 = &fun2;//第二種賦值方法(推薦,因為和其他數據指針賦值方法一致)  pfun2(1,'a');  (*pfun2)(2,'b');  return 0;}

函數指針作為函數參數:

#include <stdio.h>#include <stdlib.h>void fun(int k, char c){  printf("this is fun2 call:%d %c/n", k, c);}void fun1(void (*pfun)(int, char), int a, char c){  pfun(a, c);}int main(){  fun1(fun, 1, 'a');  return 0;}// c++ 的形式差不多

函數指針作為函數返回值:

// c 形式#include <stdio.h>#include <stdlib.h>void fun(int k, char c){  printf("this is fun2 call:%d %c/n", k, c);}//fun1 函數的參數為double,返回值為函數指針void(*)(int, char)void (*fun1(double d))(int, char){  printf("%f/n",d);  return fun;}int main(){  void (*p)(int, char) = fun1(3.33);  p(1, 'a');  return 0;}//c++ 形式#include <iostream>using namespace std;class test{public:  int fun(int a, char c)  {    cout<<"this is fun call:"<<a<<" "<<c<<endl;    return a;  }};class test2{  public:  // test2 的成員函數fun1,參數是double,  //返回值是test的成員函數指針int(test::*)(int, char)  int (test::*fun1(double d))(int, char)  {    cout<<d<<endl;    return &test::fun;  }};int main(){  test mytest;  test2 mytest2;  int (test::*p)(int, char) = mytest2.fun1(3.33);  (mytest.*p)(1, 'a');  return 0;}

函數指針數組:

#include <stdio.h>#include <stdlib.h>float add(float a,float b){return a+b;}float minu(float a,float b){return a-b;}int main(){  //定義一個函數指針數組,大小為2  //里面存放float (*)(float, float)類型的指針  float (*pfunArry[2])(float, float) = {&add, &minu};  double k = pfunArry[0](3.33,2.22);// 調用  printf("%f/n", k);  k = pfunArry[1](3.33,2.22);  printf("%f/n", k);  return 0;}//c++ 可類比

typedef 簡化函數指針類型:

#include <stdio.h>#include <stdlib.h>float add(float a,float b){  printf("%f/n",a+b);  return a+b;}float minu(float a,float b){  printf("%f/n",a-b);  return a-b;}//用pfunType 來表示float(*)(float, float)typedef float(*pfunType)(float, float);int main(){  pfunType p = &add;//定義函數指針變量  p(3.33, 2.22);  pfunType parry[2] = {&add, &minu};//定義函數指針數組  parry[1](3.33, 2.22);  //函數指針作為參數可以定義為:void fun(pfunType p)  //函數指針作為返回值可以定義為:pfunType fun();  return 0;}//c++ 可類比

總結

以上就是本文關于C++中函數指針詳解及代碼示例的全部內容,希望對大家有所幫助。有什么問題可以隨時留言,小編會及時回復大家的。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久亚洲国产300| 清纯唯美亚洲激情| 亚洲男人第一网站| 成人在线中文字幕| 亚洲国产精品va在线观看黑人| 日韩精品视频免费专区在线播放| 欧美影院久久久| 91精品国产成人www| 成人写真视频福利网| 91在线|亚洲| 欧美另类在线播放| 日韩av在线免费观看| 狠狠综合久久av一区二区小说| 国产亚洲精品久久久久久牛牛| 久久深夜福利免费观看| 97精品国产97久久久久久免费| 97视频免费看| 亚洲成人激情视频| 大量国产精品视频| 久久久女人电视剧免费播放下载| 日韩精品在线免费观看视频| 国产成人综合精品在线| 欧美极品少妇xxxxⅹ免费视频| 欧美一级片在线播放| 国产精品自产拍在线观看中文| 97成人精品视频在线观看| 韩国日本不卡在线| 欧美精品久久久久a| 成人激情视频在线观看| 久久亚洲影音av资源网| 国产精品黄页免费高清在线观看| 中文字幕欧美视频在线| 中文字幕日韩精品在线观看| 亚洲高清色综合| 色综久久综合桃花网| 亚洲大胆人体视频| 欧美日韩国产中文精品字幕自在自线| 韩剧1988在线观看免费完整版| 日韩精品一区二区三区第95| 久久久欧美一区二区| 国产精品国产亚洲伊人久久| 国产日韩av在线播放| 欧美丝袜一区二区| 国产精品美女主播在线观看纯欲| 国产精品情侣自拍| 亚洲成人av在线播放| 亚洲欧美一区二区精品久久久| 午夜精品久久久久久99热软件| 这里只有精品视频| 日韩电影在线观看永久视频免费网站| 亚洲激情中文字幕| 欧美高清videos高潮hd| 91亚洲午夜在线| 欧美午夜久久久| 色综合男人天堂| 激情成人在线视频| 日韩欧美中文字幕在线观看| 国产精品女人久久久久久| 国产中文欧美精品| 欧美午夜精品在线| 91精品国产综合久久香蕉922| 日韩高清免费观看| 九九久久久久99精品| 91视频-88av| 国产精品久久久久久久天堂| 亚洲人成77777在线观看网| xxav国产精品美女主播| 亚洲黄色av女优在线观看| 欧美性猛交99久久久久99按摩| 91久久久亚洲精品| 中文字幕一区电影| 在线视频国产日韩| 日韩av免费看| 亚洲精品一区中文| 亚洲色图综合网| 久久精品中文字幕免费mv| 亚洲一级免费视频| 国产丝袜精品视频| 久久久免费精品| 自拍偷拍亚洲欧美| 人体精品一二三区| 美日韩丰满少妇在线观看| 久久久免费高清电视剧观看| 夜夜躁日日躁狠狠久久88av| 成人国产精品色哟哟| 97精品国产97久久久久久免费| 情事1991在线| 亚洲国产精品中文| 欧美激情伊人电影| 日韩精品免费观看| 亚洲第一色中文字幕| 欧美大胆a视频| 欧美精品videosex牲欧美| 中文字幕日韩在线观看| 日韩电影中文字幕av| 日韩美女写真福利在线观看| 亚洲精品美女网站| 久久视频精品在线| 91伊人影院在线播放| 亚洲影院色在线观看免费| 亚洲男人天堂九九视频| 欧美精品videosex极品1| 国产精品福利小视频| 2019国产精品自在线拍国产不卡| 亚洲男人天堂手机在线| 97精品久久久中文字幕免费| 亚洲一区二区三区视频播放| 国自产精品手机在线观看视频| 81精品国产乱码久久久久久| 国产一区二区三区中文| 欧美激情影音先锋| 成人天堂噜噜噜| 日韩国产欧美精品一区二区三区| 久久影视电视剧免费网站| 亚洲已满18点击进入在线看片| 国产欧美日韩中文字幕| 精品欧美激情精品一区| 精品露脸国产偷人在视频| 亚洲欧美国产一本综合首页| 国产日韩精品在线观看| 亚洲一区二区少妇| 亚洲日本中文字幕免费在线不卡| 国产成人一区二区三区| 亚洲欧洲在线免费| 日韩中文字幕在线播放| 国产成人精品久久久| 91久久久久久| 国产一区二区激情| 日韩电影免费在线观看中文字幕| 久久精品久久久久电影| 日韩成人在线免费观看| 久久久久久久久久久人体| 国产91色在线免费| 精品久久久久久国产91| 精品国偷自产在线| 日韩欧美在线视频日韩欧美在线视频| 日韩av片免费在线观看| 亚洲精品白浆高清久久久久久| 一本大道香蕉久在线播放29| 2018中文字幕一区二区三区| 国产精品日韩在线观看| 久久激情五月丁香伊人| 久久久www成人免费精品张筱雨| 日韩电影大全免费观看2023年上| 欧美性猛交xxxx富婆弯腰| 欧美成人黑人xx视频免费观看| 亚洲国产成人久久综合| 国产精品高清在线| 欧美极品少妇xxxxⅹ喷水| 亚洲最大福利视频| 2024亚洲男人天堂| 久久久午夜视频| 精品国偷自产在线视频99| 欧美性xxxx极品hd欧美风情| 97av在线视频免费播放| 午夜精品久久久久久久99热| 日韩亚洲一区二区| 国产精品永久在线| 国产成人精品电影| 亚洲精品一区二区三区不| 姬川优奈aav一区二区| 成人免费看吃奶视频网站| 精品国产91久久久久久老师| 成人在线观看视频网站|