21.引用指针

 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 }

 

posted @ 2018-03-11 16:23  喵小喵~  阅读(119)  评论(0编辑  收藏  举报