C 複習第四天 引用不簡單(本質是指標)

2021-08-08 13:29:19 字數 3127 閱讀 6432

引用和指標都是存放變數的首位址的,區別在於,指標的話,要同過 *操作符來訪問變數記憶體的值,即要程式設計師手動來操作。 

指標可通過加減(只能加減)來改變該指標變數中的位址的值。而引用的話不能修改位址值,而是封裝了訪問變數這一步,即自動解引用,不需要額外的操作符,對引用變數的修改,是解析該引用變數裡存的位址值訪問變數的首位址直接改了該變數的值。而指標是通過*操作符手動解引用。

/*************************陣列引用*************************/

#include#include#define main(n) main##n()

// int a[10]

// int (&ra)[10]

// int a[2][5]

// int (&ra)[2][5]

int main1()

; int(&ra)[10](a);//引用乙個陣列

int i = 0;

for (auto data: ra)//c++11的迴圈

std::cout << a << ra << std::endl;

std::cout << &a << &ra << std::endl;

system("pause");

return 0;

}int main2()

; int(&ra)[2][5](a);//引用就是給原來的變數有乙個別名同乙個位址

for (int i = 0; i < 2; i++)

std::cout << "\n";

}std::cout << a << ra << std::endl;

std::cout << &a << &ra << std::endl;

system("pause");

return 0;

}/*************************函式指標引用*************************/

int jia(int a, int b)

int jian(int a, int b)

//引用函式指標作為函式引數:可以修改函式指標指向的函式

int change( int(* &rp)(int,int) )

int main3()

/************************函式返回值是乙個函式指標的引用***************************/

//changep函式的引數是乙個函式指標的引用,而changep函式的返回值還是乙個函式指標的引用

int(*& changep(int (*&rp)(int,int)) )(int, int)

int main4()

/*************************引用的本質*************************/

int main5()

; //int& p [4] = ;

//引用陣列是非法的

system("pause");

return 0;

}struct mystr

};class myclass

;int main6()

/*************************右值引用&&*************************/

int getdata(int&& num)//右值引用,節約記憶體拷貝,記憶體優化所必須,直接在暫存器上操作

int main7()

/*************************引用*************************/

//左值引用和右值引用的區別

//左值,一般可以取位址就是左值

//右值某些情況可以,某些情況不可以取位址

int main8()

/*************************const*************************/

int main9()

/*************************const引用*************************/

int main10()

int main11()

int main()

輸出結果

/********************main1***************/55

5555

5555

0x22fe500x22fe50

0x22fe500x22fe50

請按任意鍵繼續. . .

/********************main2***************/

1 2 3 4 5

6 7 8 9 10

0x22fe5c0x22fe5c

0x22fe5c0x22fe5c

請按任意鍵繼續. . .

/********************main3***************/3-1

請按任意鍵繼續. . .

/********************main4***************/3-1

請按任意鍵繼續. . .

/********************main5***************/

請按任意鍵繼續. . .

/********************main6***************/48

12請按任意鍵繼續. . .

/********************main7***************/616

請按任意鍵繼續. . .

/********************main8***************/313

請按任意鍵繼續. . .

/********************main9***************/

請按任意鍵繼續. . .

/********************main10***************/

請按任意鍵繼續. . .

/********************main11***************/

3請按任意鍵繼續. . .



面試複習(深圳第四天)

今日陽光明媚,複習一下原始碼 多執行緒 io rpc jvm io nio由原來的阻塞讀寫 占用執行緒 變成了單執行緒輪詢事件,找到可以進行讀寫的網路描述符進行讀寫。除了事件的輪詢是阻塞的 沒有可幹的事情必須要阻塞 剩餘的i o操作都是純cpu操作,沒有必要開啟多執行緒。總結來說,傳統的io跟nio...

Python打卡第四天(複習)

python只有變數,沒有名字 變數需要注意的地方 1.變數只能用字母表示,且字母不能分開 2.在使用變數之前,需要對其先賦值 3.變數名可以包括字母 數字 下劃線,但變數名不能以數字開頭 字母可以是大寫或者小寫,但大小寫是不同的。也就是說fish和fish對於python來說是完全不同的。4.等號...

學習筆記複習第四天

判斷元素相等容易系統崩潰 html中相同標籤位置不同 即為不相同 html 中元素標籤不僅有內容屬性 還有位置屬性 即在整段 的行數 concat 方法用於合併兩個或多個陣列。此方法不會更改現有陣列,而是返回乙個新陣列。var alpha a b c var numeric 1,2,3 alpha....