天天看点

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;
}
           

对象数组

数组的所有元素都是类的对象。

定义

类名 数组名 [元素个数];
           

调用

调用对象数组元素中的成员的方法与调用普通类的对象的成员的方法一致。

数组名[下标].成员名
           

初始化

对于给定初始值的数组元素调用用形参类型匹配的构造函数进行构造对象,对于未给定初始值的对象数组元素使用默认构造函数进行初始化。

继续阅读