1 #include <iostream>
2 using namespace std;
3 //改变指针,需要二级指针,也可以用引用
4
5 //左值引用与右值引用
6 void main1()
7 {
8 int a(4);
9 int *p(new int(5));
10 cout << a << endl;
11 cout << *p << endl;
12 //右值引用
13 int &&rra(move(a));//右值引用,有内存实体就直接引用,没有就开辟内存
14 rra = 1;
15 cout << a << endl;
16
17 //左值引用
18 int &la(a);
19 int *&lp(p);
20 la = 3;
21 *lp = 12;
22 cout << a << endl;
23 cout << *p << endl;
24
25
26 cin.get();
27 }
28
29 //引用一级指针
30 int num1 = 10;
31 int num2 = 20;
32 //C++能用引用就别用指针
33 //引用可以改变指针的地址也可以改变指针指向的地址或值
34 void change(int *&rp)
35 {
36 rp = &num2;
37 }
38
39
40 void main2()
41 {
42 int *p = &num1;
43 change(p);
44 }
45
46 //引用二级指针
47 int data1 = 10;
48 int data2 = 20;
49 int *p = &data1;
50 int *p2 = &data2;
51
52 //引用传递的是变量的地址
53 void changeit(int **&rpp)
54 {
55 //变量的地址指向的地址改变
56 //*rpp = &data2;
57 //变量的地址改变
58 rpp = &p2;
59 }
60
61 void main()
62 {
63 int **pp = &p;//二级指针
64 changeit(pp);
65 cout << **pp << endl;
66 cin.get();
67 }