1 #include <iostream> 2 using namespace std; 3 4 int getA1() 5 { 6 int a; 7 a = 10; 8 return a; //复制一份交给主函数相关变量,然后自己消失 9 } 10 11 int& getA2() 12 { 13 int a; 14 a = 10; 15 return a; //将自己将给主函数相关变量,然后自己消失 16 } 17 18 int main() 19 { 20 int a1 = 0; 21 int a2 = 0; 22 23 a1 = getA1(); //得到的是复制体,返回的只是一个值.返回不能当左值. 24 a2 = getA2(); //得到的是getA2本身,但因为a2本身开辟了内存,所以能够保存值.返回可以当左值. 25 26 int &a3 = getA2(); //用a3去引用getA2返回的变量本身. 27 28 printf("a1:%d\n", a1); 29 printf("a2:%d\n", a2); 30 printf("a3:%d\n", a3); 31 printf("123"); 32 printf("a2:%d\n", a2); 33 34 cin.get(); 35 return 0; 36 } 37 38 int *j() 39 { 40 static int a = 10; 41 a++; 42 return &a; 43 } 44 45 int main11() 46 { 47 j(); 48 j(); 49 //int *p = j(); 50 51 printf("%d\n", *(j())); //输出13 52 return 0; 53 }
const& 相当于 const int *const a
&相当于 int *const a
原文:http://www.cnblogs.com/c-slmax/p/5179412.html