最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++函數(shù)指針詳解

 更新時間:2021年06月25日 15:27:21   作者:途徑北海道  
這篇文章主要介紹了C++函數(shù)指針詳解,通過文字描述C++函數(shù)指針基礎(chǔ)概念,內(nèi)涵詳細的代碼實現(xiàn)和解析,希望對你能夠有所幫助

函數(shù)指針基礎(chǔ):

1. 獲取函數(shù)的地址

2. 聲明一個函數(shù)指針

3.使用函數(shù)指針來調(diào)用函數(shù)

獲取函數(shù)指針:

函數(shù)的地址就是函數(shù)名,要將函數(shù)作為參數(shù)進行傳遞,必須傳遞函數(shù)名。

聲明函數(shù)指針

聲明指針時,必須指定指針指向的數(shù)據(jù)類型,同樣,聲明指向函數(shù)的指針時,必須指定指針指向的函數(shù)類型,這意味著聲明應(yīng)當指定函數(shù)的返回類型以及函數(shù)的參數(shù)列表。

例如:

double cal(int);   // prototype
double (*pf)(int);   // 指針pf指向的函數(shù), 輸入?yún)?shù)為int,返回值為double 
pf = cal;    // 指針賦值

如果將指針作為函數(shù)的參數(shù)傳遞:

void estimate(int lines, double (*pf)(int));  // 函數(shù)指針作為參數(shù)傳遞

使用指針調(diào)用函數(shù)

double y = cal(5);   // 通過函數(shù)調(diào)用
double y = (*pf)(5);   // 通過指針調(diào)用 推薦的寫法 
double y = pf(5);     // 這樣也對, 但是不推薦這樣寫

函數(shù)指針的使用:

#include <iostream>
#include <algorithm>
#include <cmath>
 
using namespace std;
 
double cal_m1(int lines)
{
	return 0.05 * lines;
} 
 
double cal_m2(int lines)
{
	return 0.5 * lines;
}
 
void estimate(int line_num, double (*pf)(int lines))
{
	cout << "The " << line_num << " need time is: " << (*pf)(line_num) << endl; 
}
 
 
 
int main(int argc, char *argv[])
{
	int line_num = 10;
	// 函數(shù)名就是指針,直接傳入函數(shù)名
	estimate(line_num, cal_m1);
	estimate(line_num, cal_m2); 
	return 0;
}

函數(shù)指針數(shù)組:

這部分非常有意思:

#include <iostream>
#include <algorithm>
#include <cmath>
 
using namespace std;
 
// prototype   實質(zhì)上三個函數(shù)的參數(shù)列表是等價的 
const double* f1(const double arr[], int n);
const double* f2(const double [], int);
const double* f3(const double* , int);
 
 
 
int main(int argc, char *argv[])
{
	double a[3] = {12.1, 3.4, 4.5};
	
	// 聲明指針
	const double* (*p1)(const double*, int) = f1;
	cout << "Pointer 1 : " << p1(a, 3) << " : " << *(p1(a, 3)) << endl;
	cout << "Pointer 1 : " << (*p1)(a, 3) << " : " << *((*p1)(a, 3)) << endl;
	
	const double* (*parray[3])(const double *, int) = {f1, f2, f3};   // 聲明一個指針數(shù)組,存儲三個函數(shù)的地址 
	cout << "Pointer array : " << parray[2](a, 3) << " : " << *(parray[2](a, 3)) << endl;
	cout << "Pointer array : " << parray[2](a, 3) << " : " << *(parray[2](a, 3)) << endl;
    cout << "Pointer array : " << (*parray[2])(a, 3) << " : " << *((*parray[2])(a, 3)) << endl;
    
	return 0;
}
 
 
const double* f1(const double arr[], int n)
{
	return arr;     // 首地址 
} 
 
const double* f2(const double arr[], int n)
{
	return arr+1;
}
 
const double* f3(const double* arr, int n)
{
	return arr+2;
}

這里可以只用typedef來減少輸入量:

typedef const double* (*pf)(const double [], int);  // 將pf定義為一個類型名稱;
pf p1 = f1;
pf p2 = f2;
pf p3 = f3;

到此這篇關(guān)于C++函數(shù)指針詳解的文章就介紹到這了,更多相關(guān)C++函數(shù)指針內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++快速排序超詳細講解

    C++快速排序超詳細講解

    快速排序是一種高效的排序算法,通過分治法將數(shù)組劃分為兩部分,遞歸排序,直到整個數(shù)組有序,通過代碼解析和示例,詳細解釋了快速排序的工作原理和實現(xiàn)過程,需要的朋友可以參考下
    2025-03-03
  • C++函數(shù)重載詳解及實例代碼

    C++函數(shù)重載詳解及實例代碼

    這篇文章主要介紹了C++函數(shù)重載詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • 詳解C++ sizeof(上)

    詳解C++ sizeof(上)

    這篇文章主要介紹了C++ sizeof的相關(guān)資料,幫助大家更好的理解和學習c++,感興趣的朋友可以了解下
    2020-08-08
  • 詳解QT使用http通信的同步和異步

    詳解QT使用http通信的同步和異步

    在Qt與Http通信的時候,會根據(jù)不同的情況使用同步或者異步的方式進行數(shù)據(jù)請求,下面我們就來深入了解一下http通信的同步和異步的相關(guān)知識,感興趣的小伙伴可以了解下
    2023-12-12
  • C++日期和時間編程小結(jié)

    C++日期和時間編程小結(jié)

    這篇文章主要介紹了C++日期和時間編程小結(jié)的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • C++ Boost.Signals2信號/槽概念

    C++ Boost.Signals2信號/槽概念

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-12-12
  • 枚舉和宏的區(qū)別詳細解析

    枚舉和宏的區(qū)別詳細解析

    枚舉常量具有類型,但宏沒有類型,枚舉變量具有與普通變量相同的諸如作用域、值等性質(zhì),但宏沒有,宏不是語言的一部分,它是一種預處理替換符
    2013-09-09
  • 關(guān)于C語言中數(shù)據(jù)在內(nèi)存中的存儲詳解

    關(guān)于C語言中數(shù)據(jù)在內(nèi)存中的存儲詳解

    這篇文章主要給大家介紹了關(guān)于C語言中數(shù)據(jù)在內(nèi)存中的存儲的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • 使用用C++做一顆會跳動的愛心實例代碼

    使用用C++做一顆會跳動的愛心實例代碼

    大家好,本篇文章主要講的是使用用C++做一顆會跳動的愛心實例代碼,感興趣的同學趕快來看一看吧,歡迎借鑒學習C++做一顆會跳動的愛心實例代碼
    2021-12-12
  • C語言代碼實現(xiàn)學生成績管理系統(tǒng)

    C語言代碼實現(xiàn)學生成績管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言代碼實現(xiàn)學生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-06-06

最新評論

东山县| 渑池县| 昆明市| 绥中县| 博爱县| 望谟县| 东兰县| 墨玉县| 错那县| 南雄市| 巩义市| 平原县| 周口市| 通河县| 江都市| 嘉善县| 分宜县| 贵德县| 枣阳市| 陆丰市| 荆州市| 搜索| 东方市| 嘉荫县| 毕节市| 千阳县| 襄城县| 酒泉市| 岐山县| 晋州市| 双峰县| 新平| 河源市| 和田市| 繁昌县| 嘉峪关市| 从化市| 荃湾区| 汤原县| 即墨市| 金山区|