tft每日頭條

 > 圖文

 > c語言指針用在子函數裡面

c語言指針用在子函數裡面

圖文 更新时间:2024-07-21 12:11:10

c語言指針用在子函數裡面?函數是存放在内存的代碼區域内int test(int a){ return a; } int main(int argc, const char * argv[]){ // 這裡定義了一個參數為int類型的函數,函數的返回值為int類型的指針fp int (*fp)(int a); // 将test函數的地址賦值給指針fp,完成一個指向函數該指針指向的函數的參數為int類型 fp = test; // 調用test函數,這裡返回的值為2 cout << fp(2) << endl; return 0; } ,我來為大家科普一下關于c語言指針用在子函數裡面?以下内容希望對你有幫助!

c語言指針用在子函數裡面(CC函數指針)1

c語言指針用在子函數裡面

函數指針

函數是存放在内存的代碼區域内

栗子

int test(int a){ return a; } int main(int argc, const char * argv[]){ // 這裡定義了一個參數為int類型的函數,函數的返回值為int類型的指針fp int (*fp)(int a); // 将test函數的地址賦值給指針fp,完成一個指向函數。該指針指向的函數的參數為int類型 fp = test; // 調用test函數,這裡返回的值為2 cout << fp(2) << endl; return 0; }

使用typedef

int test(int a){ return a; } int main(int argc, const char* argv[]){ // 定義一個指向函數的類型 typedef int (*fp)(int a); // 定義了一個指向函數類型的變量f fp f = test; // 進行調用 cout << f(2) << endl; return 0; }

函數指針作為參數傳遞給函數

int test(int a){ return a - 1; } // (*fun)(int) 定義了一個int類型返回值也為int類型的函數指針fun int test2(int (*fun)(int), int b){ // 這裡調用fun指針指向的函數,其傳入的參數為10 int c = fun(10) b; } int main(int argc, const char * argv[]){ // 定義函數指針 typedef int (*fp)(int a); fp f = test; // 調用test2的時候,由于指針f指向test函數的地址,将tets函數的地址作為參數傳遞給test2,然後tets2再次調用test并傳入值為10 cout << test2(f, 1) << endl; }

指向函數的指針數組

void t1(){ cout << "test1" << endl; } void t2(){ cout << "test2" << endl; } void t3(){ cout << "test3" << endl; } int main(int argc, const char * argv[]){ // 定義一個參數為空的函數指針 typedef void (*fp)(void) // 定義一個指向函數的指針數組 fp b[] = {t1, t2, t3}; // 這時通過數組下标,間接的調用 b[0](); }

指向類成員函數的函數指針

由于虛函數是偏移量,所以取得的隻是一個索引,即在虛函數表的偏移地址

非虛函數,返回的是在内存中的真實地址

普通函數指針保存的是函數體開始的地址,即,代碼指針。

數據指針 用于保存數據的指針

由于虛函數的存在,所以在在類的成員函數指針在調用的時候需要傳入類的實例化後的對象,用于找到虛函數在内存中的函數體開始的地址。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved