国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
【解惑】函數名與函數指針
userphoto

2011.03.31

關注
 今天在學習linux下c程序設計時,看到函數指針時,在書上看到一個例子如下:
1 int get_max(int i, int j, int k, int (*pt)(int,int))
2 {
3 int ret;
4
5 ret = pt(i,j);
6 // ret = (*pt)(i,j);
7
8 return ret;
9 }

  沒接觸過,函數指針可以這樣用,第一感覺應該是第六行所示的使用方式;懷疑是其書寫錯誤,后來在實際在電腦上測試了下,結果是正確的,這兩種方式都能成功運行。。。。。

   又去翻了K&R求證一下,并沒提到用函數指針名直接調用函數這種方式。自己也開始糾結了,自己接著又對程序調試了一番,看下pt與*pt的值是否一樣,如期待的那樣是一樣的,不一樣程序肯定不能正確運行,看來是編譯器在編譯的時候對函數指針變量pt與*pt是做相同值處理,pt就等于*pt;

  最后在網上看到一篇好文,詳細的講述了函數名與函數指針的關系。

    原文:《徹底搞定C指針-函數名與函數指針

void MyFun(int x);    //這個申明也可寫成:void MyFun( int );
void (*FunP)(int );   //也可申明成void(*FunP)(int x),但習慣上一般不這樣。

結論:

1. 其實,MyFun的函數名與FunP函數指針都是一樣的,即都是函數指針。MyFun函數名是一個函數指針常量,而FunP是一個函數數指針變量,這是它們的關系。
2. 但函數名調用如果都得如(*MyFun)(10);這樣,那書寫與讀起來都是不方便和不習慣的。所以C語言的設計者們才會設計成又可允許MyFun(10);這種形式地調用(這樣方便多了并與數學中的函數形式一樣,不是嗎?)。
3. 為統(tǒng)一起見,FunP函數指針變量也可以FunP(10)的形式來調用。
4. 賦值時,即可FunP=&MyFun形式,也可FunP=MyFun。

本站僅提供存儲服務,所有內容均由用戶發(fā)布,如發(fā)現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
深入理解C語言函數指針
委托和事件的綜合總結
《C語言程序設計(第2版)》第11章指針進階
C語言
高級指針話題-函數指針
boost庫 bind/function的使用 [大三四八九月實習]
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服