第五章 数组

C++ 数组:一维与二维详解

5 数组

5.1 一维数组

1.定义方式:

数据类型 数组名[数组长度]

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

数据类型 数组名[] = {值1,值2,值3,……}

2.对数组名的理解☆☆☆

int arr[8] = {2,4,6,8,10,12,14,16};
cout << "sizeof(arr) = \t " << sizeof(arr) << endl;
cout << "&arr = \t\t " << &arr << endl;
cout << "arr = \t\t " << arr << endl;

/*********输出结果为*********/
//sizeof(arr) =    32
//&arr =           000000D53ECFFC08
//arr =            000000D53ECFFC08

以下两种情况将数组名看作整个数组

  • 对数组名求 sizeof ,得到的是整个数组的所占空间。8 × sizeof(int) = 8 × 4,整型数据的大小见2.1.1节
  • 对数组名取地址&,得到的是整个数组的首地址

除此之外的所有情况,数组名都代表数组的首元素的首地址,且数组名是个常量,不可作左值被修改

3.实例:冒泡排序

/******* 实现输入五个体重值,对其降序排列 *******/
#include<iostream>
using namespace std;

int main() {
	int weight_arr[5];
	for (int i = 0; i < 5; i++)
	{
		printf("请输入第%d个体重:", i);
		cin >> weight_arr[i];
	}
	for (int i = 0; i < 5-1; i++)
	{
		for (int j = i+1; j < 5; j++)
		{
			if (weight_arr[i] < weight_arr[j])
			{
				int exchange;
				exchange = weight_arr[i];
				weight_arr[i] = weight_arr[j];
				weight_arr[j] = exchange;
			}
		}
	}
	for (int i = 0; i < 5; i++)
		cout << weight_arr[i] << "\t";

	system("pause");
	return 0;
}

5.2 二维数组

1.定义方式:

数据类型 数组名[行数][列数]

数据类型 数组名[行数][列数] = {{数据11,数据12,……},{数据21,数据22,……},……}

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

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

为了提高可读性,一般定义二维数组的结构如下:

int score_arr[3][3] =
{
	{100,100,100},
	{90 ,50 ,100},
	{60 ,70 ,80}
};

需要注意的是为什么二维数组的定义必须要有列数,只有行数不行吗?

​ 以数组arr={1,2,3,4,5,6,7,8,9} 为例

​ ----> 只有列数的话,假设列数为3,则相当于知道了每行的元素个数,那么系统将数组元素一个个放入时,每放3个元素便会自动跳到下一行,直到把9个元素全部填入

​ ----> 只有行数的话,同样假设为3,相当于系统知道有三行,但是填入数组元素的时候,由于每行元素个数不定,故可以看做每行可以放无穷的元素。系统不会将元素平均分成三份分别给每一行分配,因为数组元素可以为空

2.索引方式:

除了类似于arr[m][n]全索引的方式外,还可以使用arr[m]表示arr二维数组的第m行元素,注意不能单独索引列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值