前面第三节我们提到了变量,就是一个变化的量,是内存中的一块空间,比如我们可以用它来存放一个人的年龄 如 int age = 18;
但是 如果 是要存一个班级的年龄呢 那可能就需要30个变量 int age1 = 18,age2 = 19,age3 = 16 ......age30 = 16;这样如果把整个大学的学生的年龄都存起来可能就需要几万个变量,如果这样一个个的声明定义 可能会死人 [口怕.jpg]
于是 c++对于一组类型相同的变量提供了一种快速声明的操作,叫做 数组。使用方式如下
类型 数组名[变量个数]
这样子我们的30个变量就很好说了,直接一句 int age[30]; 搞定
前面我们说过声明变量就是在内存里要了一块空间,这里可以看作是要了30个连续的 int类型大小的空间 大概长这样子(手有点残,实际上小格子空间是一样大的)
然后这里的内容可能有点 不好理解 ,请充分发挥想象力
既然有了30个变量了,我们就要分别使用了,具体使用这组数据中的哪一个需要使用 数组名[变量序号] 的方式获取。
所以,这30个变量的名字分别叫作 a[0](注意,是从0开始的) ,a[1], a[2], a[3].......a[26] , a[27], a[28], a[29] (0~29刚刚好30个数字)
既然是30个变量了,那么就应该有办法给它们一个值。
在c++中给变量赋值的方式有两种,一种就是一个一个的去赋值
类似 age[0] = 16; age[1] = 18; .......age[29]=16; 当然也可以分别输入 类似 cin>>age[0]>>age[2]>>age[1]>>.....>>age[29];(然后我们惊喜的发现 这里居然可以使用循环 开心)
#include <iostream>
using namespace std;
void main(){
int age[10];
for(int j=0;j<10;j++){
cin>>age[j];
}
for(int i=0; i<10; i++){
cout<<"age["<<i<<"]="<<age[i]<<endl;
}
}
还有一种就是在声明数组的时候用直接赋值,所有值用逗号分隔,并用大括号把所有值括起来(注意:只有声明的时候可以用这种方法,之后就不可以了)
int age[30] = {15,17,16,.....16,16};
#include <iostream>
using namespace std;
void main(){
int age[10] = {16,15,17,16};
for(int i=0; i<10; i++){
cout<<"age["<<i<<"]="<<age[i]<<endl;
}
}
后面的那些0 是默认值。
char abc[10] = {'a','b','c','f','t'};(这里abc[0] 到 abc[4] 分别是 'a' , 'b', 'c' , 'f' , 't' 后面那些没有赋初值的都是默认值)
#include <iostream>
using namespace std;
void main(){
char abc[10] = {'a','b','c','f','t'};
for(int i=0; i<10; i++){
cout<<"abc["<<i<<"]="<<abc[i]<<endl;
}
}
然后,对于字符数组还有种简单的初始化方式 char abc[10] = "abcft";(这里和上一句效果相同)
#include <iostream>
using namespace std;
void main(){
char abc[10] = "abcft";
for(int i=0; i<10; i++){
cout<<"abc["<<i<<"]="<<abc[i]<<endl;
}
}
刚刚我们试过了在定义了一个整型的数组(在数组里面放整数)和字符型数组(在数组里面放字符) 然后 要不要试试在数组里面放数组[手动滑稽]
数组的数组 的语法如下
类型 数组名[变量行数][每行列数] 可以看作是 (类型 数组名[变量行数])[每行列数]
然后这货长这样
使用方法和上面类似
初始化从[0][0]开始先行后列
#include <iostream>
using namespace std;
void main(){
int age[3][4]={1,2,3,4,5,6};
for(int i=0; i<3; i++){
for(int j=0;j<4;j++){
cout<<"age["<<i<<"]["<<j<<"]="<<age[i][j]<<endl;
}
}
}
像数组一样初始化 首先把每个数组当成一个元素,然后再分别放入每个数组的元素(从上面行到下面行,每行从左到右)
#include <iostream>
using namespace std;
void main(){
int age[3][4]={{1,2,3},{4,5},{6}};
for(int i=0; i<3; i++){
for(int j=0;j<4;j++){
cout<<"age["<<i<<"]["<<j<<"]="<<age[i][j]<<" ";
}
cout<<endl;
}
}
循环的方式赋值
#include <iostream>
using namespace std;
void main(){
int age[3][4];
for(int a=0;a<3;a++){
for(int b=0;b<4;b++){
age[a][b] = a*b;
}
}
for(int i=0; i<3; i++){
for(int j=0;j<4;j++){
cout<<"age["<<i<<"]["<<j<<"]="<<age[i][j]<<endl;
}
}
}
刚刚讲到的只有一行的称为 一维数组,数组的数组也称为 二维数组,类似还有 三维数组,四维数组。。。。n维数组 用法类似,可以试试哦