这篇文章主要介绍“C++中的数组怎么使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“C++中的数组怎么使用”文章能帮助大家解决问题。

1 概述

所谓数组,就是一个集合,里面存放了相同类型的数据元素。

特点1:数组中的每个数据元素都是相同的数据类型。

特点2:数组是由连续的内存位置组成的。

2 一维数组2.1 一维数组定义方式

一共有三种

1.数据类型数组名[数组长度];2.数据类型数组名[数组长度]={值1,值2,值3,...};3.数据类型数组名[]={值1,值2,值3,...};

#include<iostream>usingnamespacestd;intmain(){//第一种定义数组intarr[5];memset(arr,0,sizeof(arr));//初始化为0,否则为随机数arr[0]=10;arr[1]=10;arr[2]=10;arr[3]=10;arr[4]=10;//访问数组for(inti=0;i<5;i++){cout<<arr[i]<<"";}cout<<endl;//第二种定义数组//如果在初始化的时候没有填充完,剩余的会用0来填充。intbrr[5]={20,20,20,20};for(inti=0;i<5;i++){cout<<brr[i]<<"";}cout<<endl;//第三种定义数组charcrr[]={'3','3','3','3','c'};for(inti=0;i<5;i++){cout<<crr[i]<<"";}system("pause");return0;}

第一种方法是先声明再定义,对于全局/静态数组(定义在main()之外的数组),数组内容自动初始化为0。如果是局部的,此时数组的各元素是随机数,这时可以用memset(arr, 0, sizeof(arr));使所有元素初始化为0;

第二种方法是在定义的时候直接初始化,这时如果在初始化的时候没有填充完,剩余的会用0来填充。

第三种方法在定义的时候不指定长度,这时会默认数组长度是你所赋的值的数量。

如果引用的索引超出了数组长度,也可以输出,输出结果是随机数(int型数组)/问号(char型)。

2.2 一维数组组名

一维数组组名用途:

可以统计整个数组在内存中的长度。

可以获取数组在内存中的首地址。

注意:数组名是常量,不可以像更改数组元素那样更改数组名

#include<iostream>usingnamespacestd;intmain(){//1.统计内存intarr[5]={1,2,3,4,5};cout<<"整个数组占用内存空间为:"<<sizeof(arr)<<endl;cout<<"每个元素占用内存空间为:"<<sizeof(arr[0])<<endl;//元素内存相同,所以只看一个就可以了。//2.查看数组首地址cout<<"数组的首地址为(十六进制):"<<arr<<endl;cout<<"数组的首地址为(十进制):"<<(int)arr<<endl;cout<<"数组的第一个元素地址为(十进制):"<<(int)&arr[0]<<endl;cout<<"数组的第二个元素地址为(十进制):"<<(int)&arr[1]<<endl;//会发现差4个字节,就是一个整型数组的内存大小。//3.数组名是常量,不可以想更改数组元素那样更改数组名//arr=crrsystem("pause");return0;}

练习案例1

#include<iostream>usingnamespacestd;intmain(){intarr[5]={300,350,200,400,250};intsize=sizeof(arr)/sizeof(arr[0]);intmax=0;for(inti=0;i<size;i++){if(arr[i]>max){max=arr[i];}}cout<<"最重的小猪体重为:"<<max<<endl;system("pause");return0;}

练习案例2

#include<iostream>usingnamespacestd;intmain(){intarr[5]={1,3,5,9,4};intsize=sizeof(arr)/sizeof(arr[0]);intstart=0;intend=size-1;inttemp=0;//打印逆置前的数组cout<<"数组逆置前:"<<endl;for(inti=0;i<size;i++){cout<<arr[i]<<"";}//逆置while(start<end){temp=arr[start];arr[start]=arr[end];arr[end]=temp;start++;end--;}//打印逆置后的数组cout<<"数组逆置后:"<<endl;for(inti=0;i<size;i++){cout<<arr[i]<<"";}system("pause");return0;}2.3 冒泡排序

作用:最常用的排序算法,对数组内元素进行排序。

方法:

比较相邻的元素。如果第一个比第二 个大, 就交换他们两个。

对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值。

重复以上的步骤,每次比较次数-1,直到不需要比较

例如:排序{4,2,8,0,5,7,1,3,9}

#include<iostream>usingnamespacestd;intmain(){intarr[]={4,8,0,5,7,1,3,0};intsize=sizeof(arr)/sizeof(arr[0]);//打印排序前的数组cout<<"数组排序前:"<<endl;for(inti=0;i<size;i++){cout<<arr[i]<<"";}cout<<endl;//冒泡排序for(inti=0;i<size-1;i++)//从0开始,共有size-1轮{for(intj=0;j+i<size-1;j++)//每轮的比较次数与当前轮数相加小于size-1{if(arr[j]>arr[j+1]){inttemp=arr[j];arr[j]=arr[j+1];arr[j+1]=temp;}}}cout<<"数组排序后:"<<endl;for(inti=0;i<size;i++){cout<<arr[i]<<"";}cout<<endl;system("pause");return0;}3 二维数组

二维数组就是在一维数组上,多加一个维度。

3.1 二维数组定义方式

1.数据类型数组名[行数][列数];2.数据类型数组名[行数][列数]={{数据1,数据2},{数据3,数据4}};3.数据类型数组名[行数][列数]={数据1,数据2,数据3,数据4};4.数据类型数组名[][列数]={数据1,数据2,数据3,数据4};

一般都是使用第二种,因为第二种最直观,提高代码的可读性。

#include<iostream>usingnamespacestd;intmain(){//1.数据类型数组名[行数][列数];//2.数据类型数组名[行数][列数]={{数据1,数据2},{数据3,数据4}};//3.数据类型数组名[行数][列数]={数据1,数据2,数据3,数据4};//4.数据类型数组名[][列数]={数据1,数据2,数据3,数据4};//1.intarr[2][3];arr[0][0]=0;arr[0][1]=1;arr[0][2]=2;arr[1][0]=3;arr[1][1]=4;arr[1][2]=5;for(inti=0;i<2;i++){for(intj=0;j<3;j++){cout<<arr[i][j]<<"\t";}cout<<endl;}cout<<endl;//2.intbrr[2][3]={{1,2,3},{4,5,6}};for(inti=0;i<2;i++){for(intj=0;j<3;j++){cout<<brr[i][j]<<"\t";}cout<<endl;}cout<<endl;//3.intcrr[2][3]={1,2,3,4,5,6};for(inti=0;i<2;i++){for(intj=0;j<3;j++){cout<<crr[i][j]<<"\t";}cout<<endl;}cout<<endl;//4.intdrr[][3]={1,2,3,4,5,6};for(inti=0;i<2;i++){for(intj=0;j<3;j++){cout<<drr[i][j]<<"\t";}cout<<endl;}system("pause");return0;}3.2 二维数组数组名

查看二维数组所占内存空间或者某行占用内存空间

#include<iostream>usingnamespacestd;intmain(){intarr[2][3]={{1,2,3},{4,5,6}};cout<<"二维数组占用内存为:"<<sizeof(arr)<<endl;cout<<"某一行占用内存为:"<<sizeof(arr[0])<<endl;cout<<"一个元素占用内存为:"<<sizeof(arr[0][0])<<endl;introw=sizeof(arr)/sizeof(arr[0]);intcolumn=sizeof(arr[0])/sizeof(arr[0][0]);cout<<"数组的行数为:"<<row<<"\n"<<"数组的列数为:"<<column<<endl;cout<<"二维数组的首地址是(16进制):"<<arr<<endl;cout<<"二维数组的首地址是(10进制):"<<(int)arr<<endl;cout<<"第一行首地址是(10进制):"<<(int)arr[0]<<endl;cout<<"第二行首地址是(10进制):"<<(int)arr[1]<<endl;//会发现第一行和第二行差12,正好三个整型元素cout<<"第二行第一个元素地址是(10进制):"<<(int)&arr[1][0]<<endl;//直接使用arr[1][0]是查看这个元素内容,需要用&取地址。system("pause");return0;}3.3二维数组应用举例

#include<iostream>usingnamespacestd;//vs快捷键crtl+d可以直接把本行复制到下行intmain(){intarr[3][3]={{100,100,100},{90,50,100},{60,70,80}};cout<<"成绩情况为:"<<endl;for(inti=0;i<3;i++){for(intj=0;j<3;j++){cout<<arr[i][j]<<"";}cout<<endl;}stringnames[3]={"张三","李四","王五"};for(inti=0;i<3;i++){intsum=0;for(intj=0;j<3;j++){sum+=arr[i][j];}cout<<names[i]<<"的总成绩为:"<<sum<<endl;}system("pause");return0;}

关于“C++中的数组怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。