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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <iostream> 

using namespace std;

int main()
{
//数组定义--与Java一致

//1、指定长度--不建议使用
int arr1[10];

//2、初始化长度和元素--如果给的元素不到定义的长度,则全是默认值0
int arr2[3] = { 1,2 };
cout << arr2[0] << endl;

// 3、直接给元素初始化--最推荐使用
int arr3[] = { 1,2,3,4 };

//数组长度的计算,里面有的元素都是int,一个int4字节,判断多少个元素就那总字节长度/int的字节长度
int 数组长度 = sizeof(arr3) / sizeof(int);
// 遍历数组中的元素--下标
for (int i = 0;i < 数组长度;i++) {
cout << arr3[i] << endl;
}
cout << "----------" << endl;
// 遍历数组中的元素--迭代--无法使用到被赋值的变量数组
for (int i : arr3) {
cout << i << endl;
}
cout << "----------" << endl;
// 如果需要一边遍历一边修改
for (int& i : arr3) {
if (i == 1)
{
i = 8;
}
}
cout << arr3[0] << endl;
cout << "----------" << endl;

int arr4[] = {111, 122, 123, 65, 12, 54, 8, 3, 26, 1, 99};
int* arr5 = arr4;
//小题:冒泡排序
数组长度 = sizeof(arr4) / sizeof(int);
for (int i = 0;i < 数组长度 - 1;i++) {
for (int j = 0;j < 数组长度 - 1 - i;j++) {
if (arr5[j] > arr5[j + 1]) {
int num = arr5[j];
arr5[j] = arr5[j + 1];
arr5[j + 1] = num;
}
}
}
for (int i = 0;i < 数组长度;i++) {
cout << arr4[i] << endl;
}

return 0;
}



浅拷贝与深拷贝

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
34
35
36
37
38
39
40
41
#include <iostream> 

using namespace std;

void 打印数组(int* arr, int 长度) {
for (int i = 0;i < 长度;i++) {
cout << arr[i] << " ";
}
cout << endl;
}

int main()
{
// 数组深拷贝

// 浅拷贝--只拷贝原数组首元素地址
// 深拷贝--拷贝原数组中所有元素到新数组

int arr[] = { 1,3,2,5,6,3,2 };
// 浅拷贝 -- 通过下标循环依旧可以打印,即指向的是同一个数组
int* arr1 = arr;
打印数组(arr, sizeof(arr) / sizeof(int));
arr[1] = 10;
打印数组(arr1, sizeof(arr) / sizeof(int));

// 深拷贝 -- 新建了一个数组,不会对原数组有任何影响
int arr2[sizeof(arr) / sizeof(int)];
for (int i = 0;i < sizeof(arr) / sizeof(int);i++) {
arr2[i] = arr[i];
}
arr2[0] = 100;
arr[0] = 200;
打印数组(arr, sizeof(arr) / sizeof(int));
打印数组(arr2, sizeof(arr) / sizeof(int));


return 0;
}