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行元素,注意不能单独索引列
C++ 数组:一维与二维详解
633

被折叠的 条评论
为什么被折叠?



