15、請你理解的c++中的**引用和指標
指標是指向一塊記憶體位址的變數,這個變數可以指向其他位址;引用是乙個變數的別名,只能是乙個變數的別名。乙個變數的引用可以轉為指向它的指標。
1.初始化不同,引用使用時必須初始化,且只能指向乙個變數,初始化不能指向其他變數;指標不一樣,指標使用時不必初始化,可以指向nullptr,初始化後仍可以改變指向的位址。
2.作為函式引數傳遞時,引用不需要記憶體拷貝,所以也就不需要申請記憶體,因此當函式引數傳遞時,很多時候使用&或者const&傳遞引數節省記憶體。
3.作為函式引數傳遞時,如果想改變傳遞進函式引數的原始變數的值,引用改變後改變原始變數,而指標的值改變後並不會改變原始變數,因為它只是乙份記憶體副本,如果想達到改變的效果,使用**。
4.引用的++ 是變數本事的運算,而指標的++,是記憶體位址的++。
5.如果返回動態記憶體分配的物件或者記憶體,必須使用指標,引用可能引起記憶體洩漏。
6.不要返回區域性變數引用,返回物件的引用最好const變數。
7.操作符<< 和 >> =返回引用,而操作符+-/*的返回物件不能是引用。
面試題 引用和指標
1 引用 簡單理解引用就是乙個變數的另乙個名字,從這個名字的角度對變數可以加以修飾,同時擁有const指標的特性 所以在宣告時必須初始化 1 inta 1 2const intb 4 3int ref a 必須初始化 declared as reference but not initialized...
C 高頻面試題
malloc free是c語言的標準庫函式,new delete是c 的運算子。由於malloc free是庫函式而不是運算子,不在編譯器控制許可權之內。對於使用者自定義的物件而言,用maloc free無法滿足動態管理物件的要求。廢話 new是型別安全的,malloc不是。int a new fl...
C 高頻面試題
字首式可以返回物件的引用,而字尾式必須返回物件的值所以導致在大物件產生時產生了較大的複製開銷,因此處理自定義型別的時候盡量使用字首式。a b b a a b 相對於c,c 多了過載 內聯函式 異常處理,擴充套件了物件導向的設計內容 類 繼承 虛函式 模板。c 並不是完全的物件導向,它也可以寫出面向過...