日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

函数指针及其定义和用法,C++函数指针详解(附用法代码和注意事项)

發布時間:2025/6/17 c/c++ 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 函数指针及其定义和用法,C++函数指针详解(附用法代码和注意事项) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數指針可以像一般函數一樣,用于調用函數、傳遞參數。在如 C 這樣的語言中,通過提供一個簡單的選取、執行函數的方法,函數指針可以簡化代碼。函數指針只能指向具有特定特征的函數。因而所有被同一指針運用的函數必須具有相同的參數和返回類型。

自己總結:使用函數指針調用函數有兩種方法
1.用函數指針的解引用
(*p)(實參1,實參2···實參n);
此時,*p上一定一定要加圓括號
2.直接用函數指針的名字代替指向的函數的名稱(更加方便)
用 p(實參1,實參2···實參n)
3.函數指針要與指向的函數的返回值,形參的數目和類型都要對應
4.函數指針的指向可以發生變化

驗證的例子:

#include<iostream> using namespace std; int max(int a,int b) {return a>b?a:b; } int min(int a,int b) {return a<b?a:b; }int main() {int a=11,b=12,c,d,e;int (*p1) (int ,int);int (*p3) (int ,int);int (*p2) (int ,int,int);p1=max;//c=*p1(a,b); //這里的*p1上不加括號可以嗎 ,//不可以 //否則編譯錯誤:[Error] invalid type argument of unary '*' (have 'int')c=(*p1)(a,b);p1=min;d=(*p1)(a,b);cout<<"c="<<c<<" d="<<d<<endl; //結果:c=12,d=11/*p2=max; //不對,報錯:沒有把函數max轉化為具有三個參數的函數,所以函數指針要與對應的指向的函數的返回值和形參類型和個數都要一致 c=(*p2)(a,b); */ p3=max;e=p3(a,b); 使用函數指針調用函數max cout<<"e="<<e<<endl; //結果:e=12//說明也可以直接用函數指針的名字來代替函數名字,或許在自己定義的函數名字很長時,//用簡短的函數指針名更方便吧 return 0; }

相關資料:
什么是函數指針
如果在程序中定義了一個函數,那么在編譯時系統就會為這個函數代碼分配一段存儲空間,這段存儲空間的首地址稱為這個函數的地址。而且函數名表示的就是這個地址。既然是地址我們就可以定義一個指針變量來存放,這個指針變量就叫作函數指針變量,簡稱函數指針。

那么這個指針變量怎么定義呢?雖然同樣是指向一個地址,但指向函數的指針變量同我們之前講的指向變量的指針變量的定義方式是不同的。例如:
int(p)(int, int);
這個語句就定義了一個指向函數的指針變量 p。**首先它是一個指針變量,所以要有一個“”,即(p);其次前面的 int 表示這個指針變量可以指向返回值類型為 int 型的函數;后面括號中的兩個 int 表示這個指針變量可以指向有兩個參數且都是 int 型的函數。所以合起來這個語句的意思就是:定義了一個指針變量 p,該指針變量可以指向返回值類型為 int 型,且有兩個整型參數的函數。p 的類型為 int()(int,int)。

所以函數指針的定義方式為:
函數返回值類型 (* 指針變量名) (函數參數列表);

“函數返回值類型”表示該指針變量可以指向具有什么返回值類型的函數;“函數參數列表”表示該指針變量可以指向具有什么參數列表的函數。這個參數列表中只需要寫函數的參數類型即可。

我們看到,函數指針的定義就是將“函數聲明”中的“函數名”改成“(*指針變量名)”。但是這里需要注意的是:“(*指針變量名)”兩端的括號不能省略,括號改變了運算符的優先級。如果省略了括號,就不是定義函數指針而是一個函數聲明了,即聲明了一個返回值類型為指針型的函數。

那么怎么判斷一個指針變量是指向變量的指針變量還是指向函數的指針變量呢?首先看變量名前面有沒有“”,如果有“”說明是指針變量;其次看變量名的后面有沒有帶有形參類型的圓括號,如果有就是指向函數的指針變量,即函數指針,如果沒有就是指向變量的指針變量。

最后需要注意的是,指向函數的指針變量沒有 ++ 和 – 運算。

(以上資料內容來源:
http://c.biancheng.net/view/228.html )

總結

以上是生活随笔為你收集整理的函数指针及其定义和用法,C++函数指针详解(附用法代码和注意事项)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 美女免费av | 亚洲精品久久久中文字幕 | jlzzjizz在线播放观看 | 91免费污视频 | 永久精品网站 | 亚洲成人精品一区二区三区 | 风间由美一区二区 | 岛国av在线 | 国产天堂精品 | 欧美videossex极品 | 国产亚洲精品久久久久四川人 | 日韩久久一区二区 | 三级网站在线免费观看 | 无码人妻精品中文字幕 | 久久国产91| 少妇xxxx69| 国产国语对白 | 中文字幕一区二区三区四区免费看 | 爱草av| 蜜乳av中文字幕 | 粗大的内捧猛烈进出视频 | 在线看黄网址 | xxav在线 | 全程偷拍露脸中年夫妇 | 亚洲国产精品久久 | 日韩av在线网站 | 国产主播一区二区 | 熟女人妻在线视频 | 最新日韩中文字幕 | 波多野结衣乳巨码无在线 | 成人在线小视频 | 久久都是精品 | 91一区二区三区在线观看 | 亚洲深夜av| 都市激情久久 | 99在线看 | 一级全黄毛片 | 久久免费激情视频 | 亚洲第一视频在线观看 | 狠狠狠狠狠干 | 国产盗摄一区二区 | 伊人激情视频 | 日日干av| 色视频导航 | 色干综合 | 奇米第四色7777 | 女同亚洲精品一区二区三 | 免费黄色网址在线观看 | 青青草av在线播放 | 国产日韩欧美一区 | 久久中文精品 | 天天做日日做 | 亚洲经典在线观看 | 青青自拍视频 | 日本高清不卡在线 | 少妇毛片 | 欧洲久久久久 | 中文字幕爱爱 | 黄色成年网站 | 免费观看污网站 | 贵族女沦为官妓h呻吟 | 欧美黑大粗 | 日韩在线观看视频一区二区三区 | 99精品欧美一区二区三区 | 成人在线视频一区二区 | 欧美丰满一区二区免费视频 | 国产婷婷色一区二区在线观看 | 在线一区二区三区四区五区 | 国产色av| 99cao| 欧美色亚洲 | 亚洲91网站 | 黄色免费av | 欧美伊人 | 亚洲av成人精品一区二区三区在线播放 | 久久久久国产精品无码免费看 | 噜噜噜在线 | 国产高清成人久久 | 日韩特黄 | 日本一级淫片色费放 | 亚洲精品乱码久久久久久麻豆不卡 | 婷婷成人av | 日日噜噜噜夜夜爽爽狠狠视频97 | 日本啪啪网 | 极品淫少妇 | 国产在线第一页 | 先锋资源国产 | 男朋友是消防员第一季 | 日本少妇xxxx动漫 | 17c在线| 少妇熟女一区二区 | 91天堂在线观看 | 亚洲码在线观看 | 天堂福利在线 | 天天爽夜夜春 | 国产成人无码久久久精品天美传媒 | 伊人影院综合 | 成人漫画网站 | 成人网在线免费观看 |