一、一维数组
1、数组的特点:
- 放在一片连续空间中
- 数组中每个元素的类型都是相同的数据类型
- 数组的下标是从0开始的
- 如果数组的元素没有被指定初值,系统默认赋值为0
2、一维数组的定义方式
- 数据类型 数组名[数组长度];
int arr[5];
arr[0] = 0;//使用数组的下标给arr赋值
arr[1] = 1;
arr[2] = 2;
arr[3] = 3;
arr[4] = 4;
注意:如果数组的元素没有被指定初值,可能会出现乱码
- 数据类型 数组名[数组长度]={值1,值2,值3…}
//在创建数组的时候,就一并赋予初值
int arr[5] = {0,1,2,3,4};
注意:如果数组的元素没有被指定初值,系统默认赋值为0
- 数据类型 数组名[]={值1,值2,值3…}
说明:系统会根据你赋予的初值给你的数组指定长度
int arr[] = { 2,5,3,6,7 };
for (int i = 0; i < 5; i++)//这里使用for循环的遍历对数组进行输出
{
cout << arr[i] << endl;
}
3、一维数组数组名
- 用途1:可以统计整个数组在内存中的长度
int arr[5] = { 0,1,2,3,4 };
cout << "整个数组所占的字节大小"<<sizeof(arr) << endl;//统计整个数组所占的字节大小
cout <<"数组中第一个元素所占的字节大小"<< sizeof(arr[0]) << endl;//统计数组中第一个元素所占的字节大小
//整个数组所占的字节大小除以数组中第一个元素所占的字节大小就是数组的长度
cout << "数组的长度:"<<sizeof(arr) / sizeof(arr[0]) << endl;
- 用途2:可以获取数组在内存中的首地址
int arr[5] = { 0,1,2,3,4 };
cout <<"数组的首地址"<< arr << endl;
cout << "数组的首地址" << &arr[0] << endl;
4、冒泡排序
作用:最常用的排序算法,对数组内的元素进行排序
- 1、比较相邻的元素,如果第一个比第二个大,就交换它们两个
- 2、对每一对相邻元素做相同的工作,执行完毕后,找到第一个最大值
- 3、重复以上的步骤,每一次比较次数-1,直到不需要比较
int arr[] = { 4,2,8,0,5,7,1,3,9 };
int len = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < len-1; i++)
{
for (int j = 0; j < len - i - 1; j++)
{
if (arr[j] > arr[j + 1])
{
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
二、二维数组
1、二维数组的定义方式
- 数据类型 数组名[行数][列数];
int arr[2][2];
arr[0][0] = 0;
arr[0][1] = 1;
arr[1][0] = 2;
arr[1][1] = 3;
- 数据类型 数组名[行数][列数]={ {数据1,数据2…},{数据3,数据4…}…};
int arr[2][3] = { {1,2,3},{4,5,6} };
- 数据类型 数组名[行数][列数]={ 数据1,数据2,数据3,数据4…};
int arr[2][3] = { 1,2,3,4,5,6 };
- 数据类型 数组名[][列数]={ 数据1,数据2,数据3,数据4…};
int arr[][3] = { 1,2,3,4,5,6 };//系统会根据数组的值判断行数,并向上取整
注意:
2、二维数组的数组名
- 查看二维数组所占的内存空间
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[][0])//不可以计算第一列的存储空间
cout << "二维数组的行数:" << sizeof(arr) / sizeof(arr[0]) << endl;
cout << "二维数组的列数:" << sizeof(arr[0]) / sizeof(arr[0][0]) << endl;
- 获取二位数组的首地址
int arr[2][3] = { 1,2,3,4,5,6 };
cout <<"数组的首地址"<< arr << endl;
cout << "数组第一行元素的首地址"<<arr[0] << endl;
cout << "数组第二行元素的首地址"<<arr[1] << endl;
cout << "数组第一个元素的地址" <<&arr[0][0] << endl;