亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

C++指針與函數—指針作為參數和返回值

2020-05-23 14:27:10
字體:
來源:轉載
供稿:網友
指針在函數中的使用也是十分廣泛的。某些情況下,將指針作為函數的參數或函數的返回值會給我們帶來方便。而某些情況下,我們又不得不將指針作為函數的參數或函數的返回值。

指針作為參數

我們在上一章我們已經了解向函數傳遞數組的實質是向函數傳遞數組首元素的地址。我們又知道數組名是一個指向數組首元素的指針常量。所以我們認為,向函數傳遞數組是將指針作為參數的特殊形式。

由于指針可以直接操作內存中的數據,所以它可以用來修改實參。這個功能和引用是類似的。

下面我們來看一段程序,了解指針作為參數時的上述兩個特點:(程序8.6.1)
#include "iostream.h"
void arrayCopy(int *src,int *dest,int size);//復制數組元素
void display(const int *array,int size);//輸出數組元素
int main()
{
   int a[]={3,4,5,6,3,1,6};
   int b[7];
   arrayCopy(a,b,sizeof(a)/sizeof(int));//把數組a的元素依次復制到數組b中
   cout <<"The data of array a is:";
   display(a,sizeof(a)/sizeof(int));
   cout <<"The data of array b is:";
   display(b,sizeof(b)/sizeof(int));
   return 0;
}
void arrayCopy(int *src,int *dest,int size)
{
   for (int i=0;i<size;i++)
   {
      dest[i]=src[i];//修改了實參數組元素
   }
   cout <<size <<" data Copied." <<endl;
}
void display(const int *array,int size)//const用來保護指針指向的數據
{
   for (int i=0;i<size;i++)
   {
      cout <<array[i] <<" ";
   }
   cout <<endl;
}

運行結果:
7 data Copied.
The data of array a is:3 4 5 6 3 1 6
The data of array b is:3 4 5 6 3 1 6

根據arrayCopy函數,不難看出傳遞數組和傳遞指針是完全相同的。而通過指針的間接引用或數組操作,我們可以在函數內實現對實參的修改。這就是arrayCopy函數能夠實現復制功能的原因。

不過,將指針作為函數參數的副作用仍然不容我們忽視。指針和引用雖然都能夠修改實參,但是指針卻更加危險。因為引用僅限于修改某一個確定的實參,而指針卻可以指向內存中的任何一個數據,通過間接引用就能夠在一個函數內修改函數外甚至系統中的數據了。這樣一來,函數的黑盒特性就被破壞了,系統也因此變得不再安全。對于程序員來說,將指針作為函數參數可能把函數內的問題引到函數外面去,使得調試程序變得非常困難。所以,我們要認識到使用指針的兩面性,謹慎對待指針做函數參數。

為了避免指針作為函數參數導致數據被意外修改,我們可以使用const來保護指針指向的數據,如程序8.6.1中的display函數。

指針作為返回值

和別的數據類型一樣,指針也能夠作為函數的一種返回值類型。我們把返回指針的函數稱為指針函數。在某些情況下,函數返回指針可以給我們設計程序帶來方便。而且此時通過間接引用,函數的返回值還可以作為左值。

下面我們來看一段程序,了解函數如何返回指針:(程序8.6.2)
#include "iostream.h"
int * max(int *array,int size);//返回值類型是int *,即整型指針
int main()
{
   int array[]={5,3,6,7,2,1,9,10};
   cout <<"The Max Number is " <<*max(array,sizeof(array)/sizeof(int)) <<endl;//間接引用返回的指針
   return 0;
}
int * max(int *array,int size)//尋找最大值
{
   int *max=array;
   for (int i=0;i<size;i++)
   {
      if (array[i]>*max)
      max=&array[i];//記錄最大值的地址
   }
   return max;
}

運行結果:
The Max Number is 10

需要注意的是,返回的指針所指向的數據不能夠是函數內聲明的變量。道理很簡單,我們在第六章已經說明,一個函數一旦運行結束,在函數內聲明的變量就會消失。就好像下課同學們都走了,教室里的某一個座位到底有沒有坐著誰我們無法確定。所以指針函數必須返回一個函數結束運行后仍然有效的地址值。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91亚洲精品在线| 亚洲男人天堂视频| 国内精久久久久久久久久人| 91免费观看网站| 日韩高清a**址| 庆余年2免费日韩剧观看大牛| 91亚洲精品一区二区| 综合国产在线视频| 亚洲欧洲成视频免费观看| 成人在线视频网站| 国产精品第七影院| 91色琪琪电影亚洲精品久久| 国产美女91呻吟求| 久久久久99精品久久久久| 日韩在线免费av| 亚洲网址你懂得| 9.1国产丝袜在线观看| 中文字幕欧美专区| 91精品国产自产91精品| 国产精品嫩草影院一区二区| 久久久久亚洲精品国产| 国产精品永久免费| 美日韩在线视频| 欧美日韩免费在线| 高跟丝袜一区二区三区| 亚洲第一精品自拍| 亚洲大胆人体av| 亚洲精品狠狠操| 国产精品第一区| 欧美电影免费播放| 亚洲成人久久久久| 国产成人啪精品视频免费网| 91在线观看免费高清| 国产在线观看不卡| 色999日韩欧美国产| 欧美中文在线字幕| 91在线精品播放| 国产欧美一区二区三区久久| 在线成人激情视频| 国产精品igao视频| 国产精彩精品视频| 亚洲精品白浆高清久久久久久| 久久精品福利视频| 日韩av片永久免费网站| 欧美视频在线免费看| 久久久久久12| 亚洲欧美国产精品va在线观看| 国产偷国产偷亚洲清高网站| 亚洲自拍av在线| 亚洲91精品在线观看| 欧美在线观看视频| 91久热免费在线视频| 中文字幕av一区中文字幕天堂| 欧美日韩中国免费专区在线看| 国语自产精品视频在线看抢先版图片| 日韩中文字幕不卡视频| 98精品国产自产在线观看| 欧美在线激情视频| 亚洲国产欧美在线成人app| 欧美性猛交99久久久久99按摩| 日韩国产精品亚洲а∨天堂免| 九九精品在线视频| 亚洲xxxx做受欧美| 欧美第一页在线| 国产偷国产偷亚洲清高网站| 欧美激情精品久久久久久蜜臀| 国产91精品不卡视频| 国产精品爽爽ⅴa在线观看| 亚洲图片在线综合| 亚洲精品免费在线视频| 久久大大胆人体| 国产成人精品最新| 97av在线视频免费播放| 国产在线高清精品| 亚洲日韩欧美视频一区| 欧美成人午夜剧场免费观看| 欧美与黑人午夜性猛交久久久| 91久久精品国产91性色| 欧美主播福利视频| 久久影视电视剧免费网站清宫辞电视| 日韩国产欧美精品一区二区三区| 91亚洲va在线va天堂va国| 亚洲色图色老头| 欧美在线精品免播放器视频| 91精品国产乱码久久久久久蜜臀| 成人久久一区二区三区| 国产亚洲在线播放| 欧美另类极品videosbestfree| 久久99精品视频一区97| 亚洲国产私拍精品国模在线观看| 成人在线观看视频网站| 久久久久久久久久国产精品| 亚洲黄在线观看| 日韩在线视频观看| 欧美在线不卡区| 欧美裸体xxxx极品少妇| 精品成人国产在线观看男人呻吟| 欧美日本高清一区| 亚洲自拍欧美另类| 欧美极品少妇xxxxⅹ喷水| 久久精品99久久香蕉国产色戒| 日韩国产高清污视频在线观看| 国产69久久精品成人看| 国产亚洲人成网站在线观看| 亚洲欧美日韩精品久久亚洲区| 欧美激情综合色综合啪啪五月| 欧美又大粗又爽又黄大片视频| 亚洲一区二区自拍| 欧美午夜丰满在线18影院| 日韩精品在线视频观看| 久久亚洲精品一区二区| 一本一本久久a久久精品牛牛影视| 亚洲第五色综合网| 日韩亚洲综合在线| 欧美猛交免费看| 国产欧美日韩精品丝袜高跟鞋| 国产精品第七影院| 欧美日韩在线视频一区| 久久久免费电影| 精品无人区太爽高潮在线播放| 国产精品久久久久久久久免费| 国内成人精品一区| 日韩少妇与小伙激情| 91久久在线视频| 亚洲社区在线观看| 欧美成人手机在线| 久久久久久久久久久久久久久久久久av| 91免费精品国偷自产在线| 中文字幕日本欧美| 色综合久久88色综合天天看泰| 国产日韩精品视频| 国产精品视频免费观看www| 精品国产一区二区三区久久狼黑人| 一区二区三区视频观看| 国产美女被下药99| 欧美激情国产日韩精品一区18| 日韩av在线看| 欧美激情综合亚洲一二区| 97不卡在线视频| 上原亚衣av一区二区三区| 欧美风情在线观看| 中文字幕日韩精品在线| 国产精品第2页| 欧美孕妇与黑人孕交| 欧美另类交人妖| 久久久久久国产精品久久| 久久在线观看视频| 日韩av网址在线观看| 大桥未久av一区二区三区| 国产精品久久久久aaaa九色| www.国产一区| 成人免费观看网址| 国产精品黄视频| 中文字幕日韩欧美| 岛国精品视频在线播放| zzijzzij亚洲日本成熟少妇| 久久久久久国产免费| 日韩人在线观看| 日本精品中文字幕| 亚洲人高潮女人毛茸茸| 国产精品美女999| 国产精品扒开腿做爽爽爽男男| 麻豆国产va免费精品高清在线| 国产日产欧美精品|