C++数组

2

C++数组

  在前面已经介绍了C++的运算符和流程控制语句,这里主要介绍C++的数组,包括一维数组,二维数组以及数组名和地址之间的关系。

创建数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include<iostream>
using namespace std;

int main() {
//C++创建数组有三种常见方式,可以先定义然后赋初值,也可以定义的时候赋初值
//创建时数组的大小必须要固定,而且不能用变量作为数组的长度,int a[b]是错误的语法,虽然第三种方式没有指定数组大小,但是编译器会根据值的个数自动确定
int a[5];

for (int i = 0; i < 5; i++) {
a[i] = i;
}

int b[5] = { 1, 2, 3, 4, 5 };
int c[] = { 1, 2, 3, 4, 5 };



for (int i = 0; i < 5; i++) {
printf("a[%d] = %d ", i, a[i]);
printf("b[%d] = %d ", i, b[i]);
printf("c[%d] = %d\n", i, c[i]);
}

return 0;
}

1

数组名和数组地址

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;

int main() {
int a[5] = { 1, 2, 3, 4, 5 };
char c[3] = { 'a', 'b', 'c' };

//数组的特点是每个元素都是相同的数据类型,并且元素存放在连续的内存空间上
//int的大小为4个字节,a数组有5个元素,因此是20个字节。char的大小为1个字节,c数组有3个元素,因此是3个字节
cout << "元素a[0]的大小为" << sizeof(a[0]) << endl;
cout << "数组a的大小为" << sizeof(a) << endl;
cout << "元素c[0]的大小为" << sizeof(c[0]) << endl;
cout << "数组c的大小为" << sizeof(c) << endl;

//元素a[0]和元素a[1]索引相差1,因此大小相差4个字节,数组名代表的是数组首个元素的地址,&符号为取地址符号
cout << "元素a[0]的地址为" << &a[0] << endl;
cout << "元素a[1]的地址为" << &a[1] << endl;
cout << "数组名的值为" << a << endl;

return 0;
}

2

二维数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using namespace std;

int main() {
//二维数组和一维数组类似,有相似的创建方法
int a[3][4];

for (int i = 0; i < 3; i++) {
for (int j = 0; j < 4; j++) {
a[i][j] = i * j + 1;
}
}

int b[3][4] = { {1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12} };
int c[3][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
int d[][4] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };

//二维数组可以看成一位数组中每个元素都是一个一维数组,因此a[3][4]可以看成3个一维数组的组合,每个一维数组有4个元素
//因此二维数组的大小是一维数组的3倍,一维数组的大小是单个元素的4倍
cout << "元素a[0][0]的大小为" << sizeof(a[0][0]) << endl;
cout << "一维数组a[0]的大小为" << sizeof(a[0]) << endl;
cout << "二维数组a的大小为" << sizeof(a) << endl;

//因为数据是按照内存顺序存放的,所以先存放第一个一维数组,因此a[0][0]和a[1][0]的地址相差4个int大小,是16个字节
//二维数组名等于一维数组名a[0]等于第一个元素a[0][0]的地址
cout << "元素a[0][0]的地址为" << &a[0][0] << endl;
cout << "元素a[1][0]的地址为" << &a[1][0] << endl;
cout << "一维数组名a[0]的值为" << a[0] << endl;
cout << "一维数组名a[1]的值为" << a[1] << endl;
cout << "二维数组名a的值为" << a << endl;

return 0;
}

4

C++小结

  数组是我们存放数据的好方法,就如同抽屉一样,每一个抽屉都放置同样的物品,数组的学习非常重要,也是第一次接触到地址的概念,无论以后从事什么样的研究,数组的使用都是必不可少的,因此需要熟练掌握。

-------------本文结束感谢您的阅读-------------
0%