国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++函數指針和回調函數使用解析

C++函數指針和回調函數使用解析

2021-07-02 15:50KiddouXiaoyu C/C++

這篇文章主要為大家詳細介紹了C++函數指針和回調函數的使用,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

函數指針

函數指針是指向函數的指針變量。

通常我們說的指針變量是指向一個整型變、字符型或數組等變量,而函數指針是指向函數。

函數指針可以像一般函數一樣,用于調用函數、傳遞參數。

函數指針變量的聲明:

?
1
typedef int (*fun_ptr)(int,int); // 聲明一個指向同樣參數、返回值的函數指針變量

實例

以下實例聲明了函數指針變量 p,指向函數 max:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <stdio.h>
int max(int x, int y){
return x > y ? x : y;
}
int main(void){
/* p 是函數指針 */
int (* p)(int, int) = & max; // &可以省略
int a, b, c, d;
printf("請輸入三個數字:");
scanf("%d %d %d", & a, & b, & c);  /* 與直接調用函數等價,d = max(max(a, b), c) */
d = p(p(a, b), c); 
printf("最大的數字是: %d\n", d); 
return 0;
}
#include <stdio.h>
int max(int x, int y){
return x > y ? x : y;
}
int main(void){
/* p 是函數指針 */
int (* p)(int, int) = & max; // &可以省略
int a, b, c, d;
printf("請輸入三個數字:");
scanf("%d %d %d", & a, & b, & c);  /* 與直接調用函數等價,d = max(max(a, b), c) */
d = p(p(a, b), c); 
printf("最大的數字是: %d\n", d); 
return 0;
}

編譯執行,輸出結果如下:

請輸入三個數字:1 2 3
最大的數字是: 3

回調函數

函數指針作為某個函數的參數

函數指針變量可以作為某個函數的參數來使用的,回調函數就是一個通過函數指針調用的函數。

簡單講:回調函數是由別人的函數執行時調用你實現的函數。

你到一個商店買東西,剛好你要的東西沒有貨,于是你在店員那里留下了你的電話,過了幾天店里有貨了,店員就打了你的電話,然后你接到電話后就到店里去取了貨。在這個例子里,你的電話號碼就叫回調函數,你把電話留給店員就叫登記回調函數,店里后來有貨了叫做觸發了回調關聯的事件,店員給你打電話叫做調用回調函數,你到店里去取貨叫做響應回調事件。

實例

實例中 populate_array 函數定義了三個參數,其中第三個參數是函數的指針,通過該函數來設置數組的值。

實例中我們定義了回調函數 getNextRandomValue,它返回一個隨機值,它作為一個函數指針傳遞給 populate_array 函數。

populate_array 將調用 10 次回掉函數,并將回掉函數的返回值賦值給數組。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdlib.h>
 #include <stdio.h>
// 回調函數void populate_array(int *array, size_t arraySize, int (*getNextValue)(void)){
for (size_t i=0; i<arraySize; i++)
  array[i] = getNextValue();
}
// 獲取隨機值
int getNextRandomValue(void){
return rand();
}
int main(void){
int myarray[10];
populate_array(myarray, 10, getNextRandomValue);
for(int i = 0; i < 10; i++) { 
 printf("%d ", myarray[i]);
 }
printf("\n");
return 0;
}

編譯執行,輸出結果如下:

1680728247524916226500739849436581144108930470211272101027544145785087814587779232007237709

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.csdn.net/Mybigkid/article/details/67644490

延伸 · 閱讀

精彩推薦
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
主站蜘蛛池模板: 国外精品久久久蜜桃免费全文阅读 | 一区二区三区在线视频播放 | 国产精品久久久久久久久免费桃花 | 中文字幕久久精品 | 亚洲 欧美 日韩 在线 | 久久综合伊人77777蜜臀 | 成人精品一区二区三区中文字幕 | 欧美一区视频 | 精品色 | 国产精品久久久久久吹潮 | 在线观看免费毛片视频 | 久久久性 | 天天操综合网 | 色综合天天综合网国产成人网 | a级国产黄色片 | 四房婷婷| 黄色成人在线 | 国产99久久精品 | 国产欧美视频一区二区三区 | 亚洲国产精品yw在线观看 | 国产精品久久久久久久久久久久 | 婷婷综合久久 | 一区二区精品视频 | 成人国产精品免费观看 | 精品日韩一区二区 | 国产精品成人国产乱一区 | 久久久久亚洲 | 免费一二区 | 婷婷精品久久久久久久久久不卡 | 欧美一区二区久久久 | 欧美大片免费高清观看 | 国产区免费在线观看 | 欧美顶级毛片在线播放 | 日韩亚洲一区二区 | 国产精品久久久爽爽爽麻豆色哟哟 | 日本 欧美 国产 | 久久在线视频 | 欧美成年黄网站色视频 | 骚视频网站 | 久久99精品久久久久蜜臀 | a免费视频 |