什么是数组
数组(array)是一个存储了固定大小,同类型元素的集合。也就是说,数组就是一个由多个同类型元素按顺序排列组成的一个集合。在程序执行的过程中我们经常会存储很多数据,这时候就需要使用到数组。比如存储100个学生的成绩,每个学生的成绩(假设都是整数)都是int类型的数值,这时候,把这些成绩放到一个int sorce[100]的数组中,就可以更加方便地查看或操作这些学生的成绩。
数组语法
声明数组
//声明数组 elementType arrayName[SIZE] //elementType可以是任何类型的数据类型,所有的数组成员都是这个类型的 //SIZE是大小,必须是大于0的整数 //上面的int sorce[100]就是一个所有成员都是int类型,数组大小为100(有100个成员)的
初始化数组
//初始化数组 //1. SIZE和Value elementType arrayName[SIZE] = {value1, value2, ..., valuen}; //2. 当有value时,可以省略SIZE,SIZE为value的个数n elementType arrayName[] = {value1, value2, ..., valuen};
数组元素赋值
注意:数组的下标是从0开始的,也就是说array[0]是数组array中的第一个元素,下标最大为SIZE-1
//数组赋值 arrayName[index] = value; //index是下标,最小为0,最大为SIZE-1
访问数组
//访问数组 arrayName[index];
处理数组
获取数组长度
sizeof(array)/sizeof(array[0]); //sizeof()函数是所传参数在内存中占的大小 //sizeof(array[0])表示里面一个元素的大小,sizeof(array)表示整个数组的大小
用输入的值来初始化数组并输入
#include <iostream> using namespace std; int main() { int sorce[10]; for (int i = 0; i < sizeof(sorce)/sizeof(sorce[0]); i++) { cout << "请输入第" << i+1 << "个学生的成绩(共十个):" ; cin >> sorce[i]; } for (int i = 0; i < sizeof(sorce)/sizeof(sorce[0]); i++) { cout << "第" << i+1 << "个学生的成绩是:" << sorce[i] << endl; } return 0; }
运行结果:
复制数组
在C++中复制数组不能直接用=来操作(array1 = array2;),需要以循环的方式一个个元素复制
#include <iostream> using namespace std; const int SIZE = 5; int main() { int list[SIZE] = {1, 2, 3, 4, 5}; int myList[SIZE]; for (int i = 0; i < SIZE; i++) { myList[i] = list[i]; } for (int i = 0; i < SIZE; i++) { cout << "myList的第" << i+1 << "个元素:" << myList[i] << endl; } return 0; }
运行结果:
求数组中所有元素之和
#include <iostream> using namespace std; const int SIZE = 5; int main() { int list[SIZE] = {1, 2, 3, 4, 5}; int total = 0; for (int i = 0; i < SIZE; i++) { total += list[i]; } cout << "list数组中所有元素之和为:" << total << endl; return 0; }
运行结果:
数组作为函数参数(按址传参)
#include <iostream> using namespace std; const int SIZE = 5;
//查看数组的第一个元素 void firstElement (int array[]) { cout << "The first element of array is " << array[0] << endl; } int main() { int list[SIZE] = {1, 2, 3, 4, 5}; firstElement(list); return 0; }
运行结果:
数组作为函数返回值
在C++中,不允许出现以数组类型为返回值的函数
//下面的函数头是错误的,因为C++中不允许以数组为返回值 int[] funcation()
但是,我们可以在函数的形参中国添加一个数组来绕过这个限制。比如一个复制数组的函数:
#include <iostream> using namespace std; const int SIZE = 5; void arrayCopy (int array1[], int array2[]) { for (int i = 0; i < SIZE; i++) { array2[i] = array1[i]; } } int main() { int list[SIZE] = {1, 2, 3, 4, 5}; int myList[SIZE]; arrayCopy(list, myList); for (int i = 0; i < SIZE; i++) { cout << "myList的第" << i+1 << "个元素:" << myList[i] << endl; } return 0; }
运行结果: