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 }