再学C++之 数组

一、一维数组

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未被赋值,系统给予乱码

  • 数据类型 数组名[数组长度]={值1,值2,值3…}
//在创建数组的时候,就一并赋予初值
int arr[5] = {0,1,2,3,4};

在这里插入图片描述
注意:如果数组的元素没有被指定初值,系统默认赋值为0
下标3和下标4未被赋值,系统默认为0

  • 数据类型 数组名[]={值1,值2,值3…}
    说明:系统会根据你赋予的初值给你的数组指定长度
    在给定了5个初始值,系统指定数组长度为5
    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;

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值