欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++的函數與指針

 更新時間:2021年10月29日 09:59:06   作者:uncle_ll  
今天小編就為大家分享一篇關于C++函數與指針的文章,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧

函數與指針

一個函數在編譯時被分配一個入口地址,這個入口地址就稱為函數的指針。在C++中, 函數名代表函數的入口地址。

  • 指針作函數的參數-實現(xiàn)地址傳遞
  • 返回指針的函數
  • 利用指向函數的指針調用函數

指針作函數的參數-實現(xiàn)地址傳遞

指針作函數的參數,具有以下用途:

  • 指針作函數參數,這時形參接受的是實參的地址。函數中通過對指針的間接訪問實現(xiàn)參數的按“引用傳遞”功能
  • 設置多個指針參數可從函數中帶回多個結果值
  • 對于傳遞一塊連續(xù)的內存區(qū)域數據,傳遞首地址比傳遞數

據值不僅開銷小而且效率高

例如:

編寫交換兩個變量值的函數(地址傳遞)

相當于改變兩個指針指向的變量內容。

void swap(int *px, *py)
{
	int t;
	t = *px;
	*px = *py;
	*py = t;
}
int main()
{
	int x=2, y=3;
	cout<<"調用前:x="<<x<<",y="<<y<<endl;
	swap(&x, &y);
	cout<<"調用后:x="<<x<<",y="<<y<<endl;
	return 0;
}

/*
輸出:
調用前:x=2, y=3
調用后:x=3, y=2
*/

在這里插入圖片描述

例如:

利用指針參數帶回函數中的多個值

計算一維數組元素的平均值,并能帶回數組中的最大值與最小值

函數原型設計如下:

double faver(int s[], int n, int *max, int *min);
其中:
s-一維數組
n-數組中元素個數
max-指向最大值
min-指向最小值
將平均值作為函數的返回值

double faver(int s[],int n,int *max,int *min)
{
	double aver=s[0];
	*max= *min =s[0];
	for(int i=1;i<n;i++)
	{ aver+=s[i];
	if(s[i]>*max)*max=s[i];
	if(s[i]<*min)*min=s[i];
	}
	return aver/n;
}
int main()
{
int a[5]={80,89,67,76,98}, max, min;
double aver;
aver=faver(a,5,&max,&min); //調用函數
cout<<"max="<<max<<"\n"<<"min="<<min<<endl;
cout<<"aver="<<aver<<endl;
return 0;
}
/*
max=98
min=67
aver=82
*/

返回指針的函數

返回指針的函數定義格式如下

類型 * 函數名(形式參數表)
{
   語句序列
}

其中:

類型 * 為函數的返回值類型,是一個指針類型

例子

編寫函數,返回字符串中首次出現(xiàn)的非空格字符開始的字符串

如:" using namespace std;" 返回"using namespace std;"

char * noblank(char * str)
{
	while(*str == ' ')
		str++;
	return str;
}
int main()
{
	char *s1 = "    using namespace std;", *s2;
	s2 = noblank(s1);
	cout << s2 << endl;
	return 0;
}

指向函數的指針變量

使用指向函數的指針變量可以存放函數的指針

指向函數的指針變量定義格式如下:

函數返回值類型 ( * 指針變量名 ) (形參類型表列);

注意,中間的括號不能省略

例如:

定義指向double型函數的指針變量,該函數有一個double型參數

double (*pf)( double );
pf=sqrt; //pf 指向一個平方根函數

時,使用*pf可以調用該函數。

cout<<(*pf)(2.0)<<endl; //輸出根號2的值
與 cout<<sqrt(2.0)<<endl; 表示式是等價的

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注腳本之家的更多內容!

相關文章

  • VC實現(xiàn)給窗體的一個按鈕添加事件的方法

    VC實現(xiàn)給窗體的一個按鈕添加事件的方法

    這篇文章主要介紹了VC實現(xiàn)給窗體的一個按鈕添加事件的方法,通過三個簡單步驟實現(xiàn)窗體按鈕添加事件,需要的朋友可以參考下
    2015-05-05
  • 深入理解C++函數棧幀

    深入理解C++函數棧幀

    本文主要介紹了C++函數棧幀,詳細的介紹了C++函數棧幀的概念以及使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++保存HBITMAP為位圖文件的實現(xiàn)方法

    C++保存HBITMAP為位圖文件的實現(xiàn)方法

    這篇文章主要介紹了C++保存HBITMAP為位圖文件的實現(xiàn)方法,幫助大家更好的理解和使用c++,感興趣的朋友可以了解下
    2021-01-01
  • c語言static關鍵字用法詳解

    c語言static關鍵字用法詳解

    大家好,本篇文章主要講的是c語言static關鍵字用法詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • C語言面試常見考點排序總結

    C語言面試常見考點排序總結

    深處開發(fā)崗,其實排序也是繞不開的環(huán)節(jié),其中冒泡排序,選擇排序,插入排序,歸并排序,快速排序,堆排序也是我在秋招以來頻繁問到的技術點,今天我們來重點聊聊排序
    2021-11-11
  • C++?boost?thread庫用法詳細講解

    C++?boost?thread庫用法詳細講解

    Boost是為C++語言標準庫提供擴展的一些C++程序庫的總稱。Boost庫是一個可移植、提供源代碼的C++庫,作為標準庫的后備,是C++標準化進程的開發(fā)引擎之一,是為C++語言標準庫提供擴展的一些C++程序庫的總稱
    2022-11-11
  • C/C++的內存管理你了解嘛

    C/C++的內存管理你了解嘛

    這篇文章主要為大家介紹了C/C++的內存管理,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • 關于C++中虛擬繼承的一些總結分析

    關于C++中虛擬繼承的一些總結分析

    虛擬繼承在一般的應用中很少用到,所以也往往被忽視,這也主要是因為在C++中,多重繼承是不推薦的,也并不常用
    2013-09-09
  • MFC程序中使用QT開發(fā)界面的實現(xiàn)步驟

    MFC程序中使用QT開發(fā)界面的實現(xiàn)步驟

    本文主要介紹了MFC程序中使用QT開發(fā)界面的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 一文教你Qt如何操作SQLite數據庫

    一文教你Qt如何操作SQLite數據庫

    Sqlite 數據庫作為 Qt 項目開發(fā)中經常使用的一個輕量級的數據庫,可以說是兼容性相對比較好的數據庫之一。本文為大家介紹了Qt操作SQLite數據庫的具體方法,希望對大家有所幫助
    2023-03-03

最新評論