c++入门教程(十二)

来源:互联网 发布:软件项目招标网 编辑:程序博客网 时间:2024/06/07 21:52

前面第三节我们提到了变量,就是一个变化的量,是内存中的一块空间,比如我们可以用它来存放一个人的年龄 如  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维数组  用法类似,可以试试哦