国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

【C++】學習筆記三十二——函數和二維數組

2019-11-06 06:26:24
字體:
來源:轉載
供稿:網友

函數和二維數組

int data[3][4] = {{1,2,3,4},{9,8,7,6},{2,4,6,8}};int total = sum(data, 3);

  在上面的代碼中,函數sum將行數3作為參數,因為data是一個數組名,該數組有3個元素,每個元素都是一個由4個int值組成的數組。因此data的類型是指向 由4個int值組成的數組 的指針。則sum函數的原型如下:

int sum(int (*ar2)[4], int size);

  其中的括號是必不可少的,因為函數參數不能是數組,而且下面的聲明將聲明一個由 【4個指向int的指針】 組成的數組:

int *ar2[4];

  還有一種格式與上述原型的含義完全相同,但可讀性更強:

int sum(int ar2[][4], int size);

  上述兩個原型都指出,ar2是指針而不是數組。指針類型指出,它指向由4個int組成的數組,因此,指針類型制定了列數,因此沒有將列數作為獨立的函數參數進行傳遞。   由于指針類型制定了列數,因此sum()函數只能接受有4列組成的數組,但長度變量指定了行數,因此sum()對數組的行數沒有限制。   

int a[100][4];int b[6][4];int total1 = sum(a,100); //a中所有元素的和int total2 = sum(b,6); //b中所有元素的和int total3 = sum(a,10); //a中前10個元素的和int total4 = sum(a+10,20); //a中接下來20個元素的和

  由于參數ar2是指向數組的指針,嗎如何在函數定義中使用它呢?最簡單的方法是將ar2看作是一個二維數組的名稱,如下:

int sum(int ar2[][4], int size){ int total = 0; for (int r = 0; r < size; r++) for (int c = 0; c < 4; c++) total += ar2[r][c]; return total;}

  同樣,行數被傳遞給size,但無論是參數ar2的聲明或是內部for循環中,列數都是固定的4列。   可以使用數組表示法是因為:由于ar2指向數組(它的元素是由4個int組成的數組)的第一個元素,因此表達式ar2+r指向編號為r的元素,ar2[r]是編號為r的元素,該元素本身就是一個由4個int組成的數組的名稱,將下表用于數組名得到一個數組元素,因此ar[r][c]是由4個int組成的數組中的一個元素,是一個int值。必須對指針ar2執行兩次解除引用,才能得到數據。最簡單的方法是使用方括號兩次:ar2[r][c]。當然,也可以使用運算符*兩次:   

ar2[r][c] == *(*(ar2+r)+c)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 沭阳县| 高青县| 宕昌县| 大同市| 临邑县| 永昌县| 柘荣县| 天峨县| 大关县| 万全县| 湖南省| 瓮安县| 九龙城区| 民勤县| 五家渠市| 综艺| 呼图壁县| 武强县| 沂南县| 神池县| 明溪县| 甘泉县| 浏阳市| 新兴县| 新乐市| 嵊泗县| 卓资县| 潍坊市| 兴义市| 静安区| 屏山县| 平谷区| 民丰县| 浠水县| 合肥市| 吐鲁番市| 福州市| 沙雅县| 清涧县| 桐梓县| 临沧市|