还是引用
1 #include <iostream>
2 using namespace std;
3
4 int getA1()
5 {
6 int a;
7 a = 10;
8 return a; //復(fù)制一份交給主函數(shù)相關(guān)變量,然后自己消失,只是返回一個值,可能存在于除內(nèi)存外的其他地方.
9 }
10
11 int& getA2()
12 {
13 int a;
14 a = 10;
15 return a; //將自己將給主函數(shù)相關(guān)變量,然后自己消失,返回的是變量本身,再底層的講,返回的是該變量的內(nèi)存首地址.只是在接受方知道這里是返回引用的話,會自動加*號取值,當(dāng)然這都是C++編譯器做的.
16 }
17
18 int main()
19 {
20 int a1 = 0;
21 int a2 = 0;
22
23 a1 = getA1(); //得到的是復(fù)制體,返回的只是一個值.返回不能當(dāng)左值. 正體在函數(shù)體返回(右大括號)的時候就銷毀了,復(fù)制體由=號操作賦值給了a1之后,自我銷毀
24 a2 = getA2(); //得到的是getA2本身,但因為a2本身開辟了內(nèi)存,所以能夠保存值.返回可以當(dāng)左值.沒有復(fù)制體,a2得到的是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& 相當(dāng)于 int const *const a
&相當(dāng)于 int *const a
const& 相當(dāng)于 int const *const a
&相當(dāng)于 int *const a
當(dāng)使用常量(字面量)對const引用進(jìn)行初始化時,C++編譯器會為常量值分配空間,并將引用名作為這段空間的別名
??
轉(zhuǎn)載于:https://www.cnblogs.com/c-slmax/p/5179412.html
總結(jié)
- 上一篇: 做梦梦到两只乌龟是什么意思
- 下一篇: 梦到亲人交代遗言什么意思