Part6 数组指针与字符串 6.2 数组作为函数的参数 6.3对象数组 6.4基于范围的for循环
Posted LeoSirius
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Part6 数组指针与字符串 6.2 数组作为函数的参数 6.3对象数组 6.4基于范围的for循环相关的知识,希望对你有一定的参考价值。
6.2 数组作为函数的参数
数组元素作实参,与单个变量一样。
数组名作参数,形、实参数都应是数组名(实质上是地址),类型要一样,传送的是数组首地址。
对形参数组的改变会直接影响到实参数组。
//6-2 使用数组名作为函数参数 //主函数中初始化一个二维数组,表示一个矩阵,矩阵,并将每个元素都输出 //然后调用子函数,分别计算每一行的元素之和,将和直接存放在每行的第一个元素中,返回主函数之后输出各行元素的和。 #include<iostream> using namespace std; void rowSum(int a[][4], int 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; }
6.3对象数组
对象数组初始化:
数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象。
通过初始化列表赋值:
例:Point a[2]={Point(1,2),Point(3,4)};
如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数)。
各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。
//6-3 对象数组应用举例 //Point.h #ifndef _POINT_H #define _POINT_H class Point { //类的定义 public: //外部接口 Point(); Point(int x, int y); ~Point(); void move(int newX, int newY); int getX() const { return x; } int getY() const { return y; } static void showCount(); //静态函数成员 private: //私有数据成员 int x, y; }; #endif //_POINT_H //Point.cpp #include <iostream> #include "Point.h" using namespace std; Point::Point() : x(0), y(0) { cout << "Default Constructor called." << endl; } Point::Point(int x, int y) : x(x), y(y) { cout << "Constructor called." << endl; } Point::~Point() { cout << "Destructor called." << endl; } void Point::move(int newX, int newY) { cout << "Moving the point to (" << newX << ", " << newY << ")" << endl; x = newX; y = newY; } //main.cpp #include "Point.h" #include <iostream> using namespace std; int main() { cout << "Entering main..." << endl; Point a[2]; for (int i = 0; i < 2; i++) a[i].move(i + 10, i + 20); cout << "Exiting main..." << endl; return 0; }
6.4基于范围的for循环
//老方法 int main(){ int array[3] = {1,2,3}; int *p; for(p = array; p < array + sizeof(array)/sizeof(int); ++p){//注意+p和+*p的区别 *p += 2; std::cout << *p << std::endl; } return 0; } //基于范围的for循环 int main(){ int array[3] = {1,2,3}; for(int &e:array){ e += 2; std::cout << e << std::endl; } return 0; }
以上是关于Part6 数组指针与字符串 6.2 数组作为函数的参数 6.3对象数组 6.4基于范围的for循环的主要内容,如果未能解决你的问题,请参考以下文章