C++中的数组怎么使用
这篇文章主要介绍“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++中的数组怎么使用”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。