目录
数组:一个集合,存放相同类型的数据元素
数组特点:
- 数组中每个数据元素都是相同的数据类型
- 数组是由连续的内存位置组成的
一、一维数组
1.定义的三种方式
数据类型 数组名[ 数组长度 ];
数据类型 数组名[ 数组长度 ] = { 值1,值2 … };
数据类型 数组名[ ] = { 值1,值2 … };
2.数组名
数组名是常量,不可以进行赋值操作。
用途:
- 可以统计整个数组在内存中的长度
- 可以获取数组在内存中的首地址
#include<iostream>
using namespace std;
int main(){
int arr[10]={1,2,3,4,5,6,7,8,9,10};
cout<<"整个数组占用内存空间为:"<<sizeof(arr)<<endl;
cout<<"每个元素占用内存空间为:"<<sizeof(arr[0])<<endl;
cout<<"数组中元素个数"<<sizeof(arr)/sizeof(arr[0])<<endl;
cout<<"数组首地址为:"<<(int)arr<<endl;
cout<<"数组中第一个元素地址为:"<<(int)&arr[0]<<endl;
cout<<"数组中第二个元素地址为:"<<(int)&arr[1]<<endl;
/*结果:
整个数组占用内存空间为:40
每个元素占用内存空间为:4
数组中元素个数10
数组首地址为:16317284
数组中第一个元素地址为:16317284
数组中第二个元素地址为:16317288
*/
return 0;
}
案例-五只小猪称体重
#include<iostream>
using namespace std;
//在一个数字中记录了五只小猪的体重,如:int arr[5]={300,350,200,400,250};
//找出并打印最重的小猪体重。
int main()
{
int arr[5] = {300,350,200,400,250};
int max = arr[0];
for(int i = 0;i < 5;i++)
{
if(arr[i]>max)
max = arr[i];
}
cout<<"最重的小猪是:"<<max<<endl;
}
案例-数组元素逆置
#include<iostream>
using namespace std;
//请声明一个5个元素的数组,并且将元素逆置
int main()
{
int arr[]={1,3,2,5,4};
int arr2[5];
for(int i = 4;i >= 0;i--)
{
arr2[4-i]=arr[i];
}
for(int j = 0;j < 5;j++)
{
cout<<arr2[j]<<'\t';
}
system("pause");
return 0;
}
3.冒泡排序
- 比较相邻元素,进行交换
- 对每一对相邻元素做同样的工作,执行完毕后,找到第一个最大值
- 重复步骤,每次比较次数减一,直到不需要比较
#include<iostream>
using namespace std;
//将 10个数 由小到大排序
int main(){
int a[10];
int i,j,t;
cout<<"Input ten number:"<<endl;
for(i=0;i<10;i++)
cin>>a[i];
for(i=0;i<9;i++)
//10个数,比9趟
{
for(j=0;j<9-i;j++)
//第一趟,比9次;第二趟,比8次……
if(a[j]>a[j+1])
{
t=a[j];
a[j]=a[j+1];
a[j+1]=t;
}
}
//输出
for(i=0;i<10;i++)
cout<<a[i]<<'\t';
return 0;
}
案例-将数组中指定的数据删除
#include<iostream>
using namespace std;
//将数组中指定的数据删除
int main(){
int a[6]={1,3,5,7,9,11},i,j,k;
cout<<"原数组为:"<<endl;
for(i=0;i<6;i++)
cout<<a[i]<<'\t';
cout<<"\n请输入需要删除的数据:"<<endl;
cin>>k;
for(i=0;i<6;i++)
{
if(a[i]==k)
{ for(j=i;j<5;j++)
a[j]=a[j+1];
break; //覆盖完数据后退出循环
}
}
//不是从break跳出循环,说明没有找到删除点
if(i==6)
cout<<"数组中没有要删除的数据\n";
else
{
cout<<"删除数据"<<k<<"后的数组为:\n";
for(i=0;i<5;i++)
cout<<a[i]<<'\t';
}
return 0;
}
二、二维数组
1.定义的四种方式
数据类型 数组名[ 行数 ][ 列数 ];
数据类型 数组名[ 行数 ][ 列数 ] = { { 数据1,数据2 },{ 数据3,数据4 } };
数据类型 数组名[ 行数 ][ 列数 ] = { 数据1,数据2,数据3,数据4 };
数据类型 数组名[ ][ 列数 ] = { 数据1,数据2,数据3,数据4 };
2.数组名
- 查看二维数组所占内存空间
- 获取二维数组首地址
#include<iostream>
using namespace std;
int main(){
int arr[2][3] =
{
{1,2,3},
{4,5,6}
};
cout<<"二维数组占用内存空间为:"<<sizeof(arr)<<endl;
cout<<"二维数组第一行占用内存为:"<<sizeof(arr[0])<<endl;
cout<<"二维数组第一个元素占用内存为:"<<sizeof(arr[0][0])<<endl;
cout<<"二维数组行数为:"<<sizeof(arr)/sizeof(arr[0])<<endl;
cout<<"二维数组列数为:"<<sizeof(arr[0])/sizeof(arr[0][0])<<endl;
cout<<"二维数组首地址为:"<<(int)arr<<endl;
cout<<"二维数组第一行首地址为:"<<(int)arr[0]<<endl;
cout<<"二维数组第二行首地址为:"<<(int)arr[1]<<endl;
cout<<"二维数组第一个元素首地址为:"<<(int)&arr[0][0]<<endl;
//访问具体元素要用取址符&
/*结果:
二维数组占用内存空间为:24
二维数组第一行占用内存为:12
二维数组第一个元素占用内存为:4
二维数组行数为:2
二维数组列数为:3
二维数组首地址为:7339400
二维数组第一行首地址为:7339400
二维数组第二行首地址为:7339412
二维数组第一个元素首地址为:7339400
*/
return 0;
}