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

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

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

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

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

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

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

獲取函數(shù)指針:

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

聲明函數(shù)指針

聲明指針時,必須指定指針指向的數(shù)據(jù)類型,同樣,聲明指向函數(shù)的指針時,必須指定指針指向的函數(shù)類型,這意味著聲明應(yīng)當(dā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++快速排序超詳細(xì)講解

    C++快速排序超詳細(xì)講解

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

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

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

    詳解C++ sizeof(上)

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

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

    在Qt與Http通信的時候,會根據(jù)不同的情況使用同步或者異步的方式進(jìn)行數(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++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標(biāo)準(zhǔn)庫的后備,是C++標(biāo)準(zhǔn)化進(jìn)程的開發(fā)引擎之一,是為C++語言標(biāo)準(zhǔn)庫提供擴(kuò)展的一些C++程序庫的總稱
    2022-12-12
  • 枚舉和宏的區(qū)別詳細(xì)解析

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

    枚舉常量具有類型,但宏沒有類型,枚舉變量具有與普通變量相同的諸如作用域、值等性質(zhì),但宏沒有,宏不是語言的一部分,它是一種預(yù)處理替換符
    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)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 使用用C++做一顆會跳動的愛心實例代碼

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

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

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

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

最新評論

永和县| 远安县| 石棉县| 隆尧县| 永德县| 玉树县| 胶南市| 都安| 鄄城县| 翁牛特旗| 太湖县| 慈溪市| 兖州市| 霍山县| 五莲县| 金溪县| 滦南县| 城口县| 龙江县| 富宁县| 福州市| 右玉县| 西昌市| 孝感市| 布尔津县| 大厂| 泸西县| 蒙城县| 广西| 盐山县| 怀集县| 黑河市| 绵竹市| 台北市| 陆良县| 西吉县| 沅江市| 麦盖提县| 紫金县| 蒲城县| 思南县|