国产探花免费观看_亚洲丰满少妇自慰呻吟_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)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 金秀| 宜都市| 延长县| 吴旗县| 海宁市| 保亭| 淮阳县| 孟连| 池州市| 盐亭县| 平昌县| 平利县| 博客| 扎鲁特旗| 灌南县| 扎赉特旗| 南汇区| 张北县| 军事| 中山市| 望城县| 噶尔县| 于都县| 黎城县| 六安市| 丘北县| 北辰区| 富锦市| 大冶市| 安龙县| 宁蒗| 林芝县| 湘潭县| 新丰县| 邵武市| 彩票| 依安县| 广元市| 江永县| 乐安县| 武穴市|