天天看點

C++學習筆記30:數組作函數參數和對象數組

之前的絕大多數學習筆記基本上是在抄書和抄筆記,本質上失去了寫部落格的意義,是以此篇以後需要按照自己的了解和想法來寫。最初的版本可以不夠嚴謹準确,但是後續肯定會繼續更新自己的了解,確定内容的完整和準确。

數組作函數參數

數組作為函數實參的時候可以有兩種情況,一種是使用數組的元素作為實參,另一種是使用數組名作為實參。

數組元素作實參

這種情況和相同類型的其他單個變量是一樣的。

數組名作實參

此時,形實結合是傳遞的是數組首元素的位址,同時作為接收的形參也應該是數組名,且類型要相同。

注:

  1. 在函數中對形參數組元素的改變也會傳遞到實參數組中
  2. 因為形參作為接收數組,元素的個數應該大于等于實參數組的元素個數,避免發生下标越界。

例 使用數組名作函數參數,要求:定義一個二維數組組成矩陣,輸出矩陣的每個元素,将每行所有的元素之和加到每行第一個元素上,并輸出。

#include <iostream>
using namespace std;
void rowSum(int a[][4], int nRow) {    //計算二維數組A每行元素的值的和,nrow是行數
	for (int i = 0; i < nRow; i++) {
		for(int j = 1; j < 4; j++)
			a[i][0] += a[i][j];
	}
} 
int main() {	//主函數
	int table[3][4] = { {1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 6} };//聲明并初始化數組
	for (int i = 0; i < 3; i++)	{ //輸出數組元素
		for (int j = 0; j < 4; j++)
			cout << table[i][j] << "   ";
		cout << endl;
	}
	rowSum(table, 3);	//調用子函數,計算各行和
	for (int i = 0; i < 3; i++)	//輸出計算結果
		cout << "Sum of row " << i << " is " << table[i][0] << endl;
	return 0;
}
           

對象數組

數組的所有元素都是類的對象。

定義

類名 數組名 [元素個數];
           

調用

調用對象數組元素中的成員的方法與調用普通類的對象的成員的方法一緻。

數組名[下标].成員名
           

初始化

對于給定初始值的數組元素調用用形參類型比對的構造函數進行構造對象,對于未給定初始值的對象數組元素使用預設構造函數進行初始化。

繼續閱讀