麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

函數與數組

2019-11-14 09:43:48
字體:
來源:轉載
供稿:網友

一、數組作為函數參數:

int sum_arr(int arr[],int n);

注意,arr實際上并不是數組,而是一個指針!C++將數組名解釋為其第一個元素的地址,因此函數傳遞的是地址。也可以這樣聲明函數頭:

int sum_arr(int * arr,int n);

在C++中,當且僅當用于函數原型或函數頭中,int * arr和int arr[]的含義才相同。通常,當指針指向數組的第一個元素時,采用數組表示法;當指針指向一個獨立的值時,采用指針表示法。

數組名與指針對應的利弊:

首先,將數組地址作為參數可以節省復制整個數組所需的時間和內存。如果數組很大,則使用拷貝的系統開銷將非常大,另一方面,使用原始數據增加了破壞數據的危險性。

二、數組保護

由于函數參數傳遞是值傳遞,若將數組作為參數,實際上是傳遞地址,形參將是地址的拷貝,對其指向的數據進行操作將訪問原數組,而不是其拷貝。

由于會增加破壞原始數組的危險性,為防止函數中無意修改了數組內容,可在聲明形參時用const限定:

int sum_arr(const int arr[],int n);

表明,arr指向的是常量數組,不可以使用arr對數據進行修改,即為只讀。解釋為const int * arr更好理解。

三、使用數組區間:采用兩個指針,并遵照“超尾”原則,即對于數組而言,標記數組結尾的參數將是指向最后一個元素后面的指針,例如如下函數定義:

int sum_arr(const int * begin,const int * end)

{

const int * pt;

int total = 0;

for(pt = begin;pt!=end;pt++)

total = total + *pt;

return total;

}

四、指針與const

兩種情況:讓指針指向一個常量對象,可以防止使用該指針來修改所指向的值。此時,并不意味著指向的值實際上就是一個常量,只是對指針而言,這個值是個常量。這個值可以通過變量本身修改值,但不能通過指針去修改:

const int * pt = &age;//此時*pt是常量

另一種情況是,指針本身是常量,可以防止改變指針指向的位置:

int * const ps = &age;//此時ps是常量

C++禁止將const值的地址賦給非const指針。這樣將可以通過非const指針修改const值。

原則:盡可能在數組作為參數時使用const:

1、避免無意間修改數據導致錯誤;

2、使用const使得函數能夠處理const和非const實參,否則只能接受非const數據。

五、二維數組

ar2[r][c] == *(*(ar2+r)+c)

六、函數指針:分層設計,方便切換等作用

1、獲取函數地址:傳遞函數名

2、聲明函數指針:

double pam(int);

double (*pf)(int);

pf = pam;

或直接:double (*pf)(int) = pam;

3、通過指針調用函數:將(*pf)看作函數名,如:

double y = pf(5);


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 久久精精品 | 水多视频在线观看 | 91午夜少妇三级全黄 | 欧美在线成人影院 | 国av在线 | av成人免费看 | 久久96国产精品久久秘臀 | 深夜视频在线观看 | 精品亚洲综合 | 久久久国产一级片 | 老师你怎么会在这第2季出现 | 天天操天天骑 | 人禽l交免费视频观看 视频 | 九九视屏 | 欧美 日韩 国产 成人 | 久久精品一区视频 | 免费成人 | 久久久久一本一区二区青青蜜月 | 精品1| 久久99网| 外国一级黄色片 | 久久久久久99 | 在线亚洲免费 | 牛牛视频在线 | 99精品国产一区二区三区 | 欧美精品a∨在线观看不卡 午夜精品影院 | 国产超碰人人爽人人做人人爱 | 九色在线78m | www.精品视频 | 久久精品色 | 欧美人的天堂一区二区三区 | 欧美城网站地址 | 国产精品99免费视频 | 成人性生活视频 | 国产91丝袜在线播放 | 国产精品久久久久久久久久妇女 | 叉逼视频 | 国产99久久久久 | 黄色免费入口 | 偷偷草网站 | 日韩毛片免费观看 |