當前位置:首頁 » 參考文獻 » 函數指針引用

函數指針引用

發布時間: 2021-03-30 03:30:23

① 用函數指針指向要調用的函數,並進行調用,此題運行會出錯。

這題出的有問題!

在最新版本的C/C++編譯中是編譯不通過的!(也許老版本的編譯器支持!)


因為f1(double) 和f2(double,double)參數個數不同,所以函數指針定義這樣寫是不對的。

你若想編譯通過,只能定義兩個指針

#include<stdio.h>
doublef1(doublex)
{returnx*x;}
doublef2(doublex,doubley)
{returnx*y;}
doublefun(doublea,doubleb)
{
/**********found**********/
double(*fa)(double);//一個參數的
double(*fb)(double,double);//兩個參數的
doubler1,r2;
/**********found**********/
fa=f1;//修改f=fa
r1=fa(a);//修改f=fa
/**********found**********/
fb=f2;//修改f=fb
r2=(*fb)(a,b);//修改f=fb
returnr1+r2;
}
main()
{
doublex1=5,x2=3,r;
r=fun(x1,x2);
printf(" x1=%f,x2=%f,x1*x1+x1*x2=%f ",x1,x2,r);
}

② 當函數參數使用引用傳參時,怎樣通過函數指針來調用它呢

typedef int (*pfn)(int &,int &);
pfn Max=max;
int a=0,b=1;
Max(a,b);
這樣有錯嗎?

③ 如何通過函數指針調用函數

一般需要定義一個函數指針類型

typedef int (*function_pointer_t) ( int arg1, int arg2 );

然後,定義函數指針變數

function_pointer_t fp_invoker = 0;

函數指針可以動態改變內容,改變調用對象,假設有兩個函數

int function_sum( int arg1, int arg2 )
{
return arg1+arg2;
}
int function_sub( int arg1, int arg2 )
{
return arg1-arg2;
}

注意到兩個函數的原型與函數指針類型是一致的。以下是調用

fp_invoker = function_sum; // 直接用函數名賦值即可
fp_invoker(1,2); // 調用時,可以認為函數指針便是函數名,此時調用加法
fp_invoker = function_sub; // 同理,切換到減法
fp_invoker(1,2); // 調用減法

以上都是直觀的用法,通常函數指針用於回調,即下層函數先將函數指針內容保存起來,處理結束後,再調用。此時要注意首先檢查函數指針內容是否為空。

if( fp_invoker ){
fp_invoker( arg1, arg2 );
}

④ 如何引用作用域外的函數指針

先在頭文件聲明函數,然後在cpp中實現時,聲明一個Class A類型的變數,比如是m,然後調用m.AWndProc()

⑤ 在C語言中,指向函數的指針怎麼調用函數

其實,函數指針確實不是「指向函數的指針」
函數指針,就是函數指針,加不加*沒有實際意義。
二樓的那個:
c=(*p)(a,b);
也可以寫成
c=(****************************************************p)(a,b);
或者
c=p(a,b);
你說它指向什麼?
PS,加*有特殊的用途,初學者就算了

熱點內容
塗鴉論文 發布:2021-03-31 13:04:48 瀏覽:698
手機資料庫應用 發布:2021-03-31 13:04:28 瀏覽:353
版面217 發布:2021-03-31 13:04:18 瀏覽:587
知網不查的資源 發布:2021-03-31 13:03:43 瀏覽:713
基金贖回參考 發布:2021-03-31 13:02:08 瀏覽:489
懸疑故事範文 發布:2021-03-31 13:02:07 瀏覽:87
做簡單的自我介紹範文 發布:2021-03-31 13:01:48 瀏覽:537
戰略地圖參考 發布:2021-03-31 13:01:09 瀏覽:463
收支模板 發布:2021-03-31 13:00:43 瀏覽:17
電氣學術會議 發布:2021-03-31 13:00:32 瀏覽:731