C++筆試面試準備(整理) | it編輯入門教程

文章推薦指數: 80 %
投票人數:10人

C++筆試面試準備(整理). 分类C++ ... 1、C++中指針與引用的區別 ... class node { int i; //放在位置0,位置區間[0~3] char c; //1 < n, 那麼放置起始位置應該是1的 ... it編輯入門教程 首頁 最新教程 HTML CSS JavaScript jQuery Vue Bootstrap Python3 Python2 Java C C++ C# Go SQL 首頁 最新教程 HTML CSS JS C++ C++霧中風景18:C++20,從concept開始 圖論——歐拉圖原理及其應用 oj在線判題程序設計競賽c++小技巧 C++實現LRU緩存——LeetCode146 const修飾指針 C++內存分區模型 C++struct和class 聊聊第一個開源項目(內網穿透)-CProxy C++筆試面試準備(整理) 分类C++ 轉載:https://blog.csdn.net/ljh0302/article/details/81098764?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522161494999616780262523772%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=161494999616780262523772&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-1-81098764.first_rank_v2_pc_rank_v29_10&utm_term=C%2B%2B%E7%AC%94%E8%AF%95%E9%9D%A2%E8%AF%95%E9%A2%98 1、C++中指針與引用的區別 1)指針是一個新的變量,存儲了另一個變量的地址,我們可以通過訪問這個地址來修改另一個變量; 引用只是一個別名,還是變量本身,對引用的任何操作就是對變量本身進行操作,以達到修改變量的目的 2)引用只有一級,而指針可以有多級 3)指針傳參的時候,還是值傳遞,指針本身的值不可以修改,需要通過解引用才能對指向的對象進行操作。

引用傳參的時候,傳進來的就是變量本身,因此變量可以被修改。

2、結構體(struct): 將不同類型的數據組合成一個整體,sizeof(struct)是內存對齊後所有成員長度的總和。

3、內存對齊:(轉自:http://www.pinlue.com/article/2021/01/2100/0011500966600.html)   int short long char cahr* float double 32位 4 2 4 1 4 4 8 64位 4 2 8 1 8 4 8   例1:(假設指定對齊字節為8,那麼n=min(8,4)=4) classnode{inti;//放在位置0,位置區間[0~3]charc;//1n,那麼放置起始位置應該是2的倍數,即2,位置區間為[2~5]shorts;//2=n,那麼放置起始位置應該是2的倍數,即6,位置區間為[6~7]} 此時成員共占用[0~7]8個字節,剛好是4的倍數,因此大小是8 4、#define和const的區別 1)#define定義的常量沒有類型,所給出的是一個立即數;const定義的常量有類型名字,存放在靜態區域 2)處理階段不同,#define定義的宏變量在預處理時進行替換,可能有多個拷貝,const所定義的變量在編譯時確定其值,只有一個拷貝。

3)#define定義的常量是不可以用指針去指向,const定義的常量可以用指針去指向該常量的地址 4)#define可以定義簡單的函數,const不可以定義函數 5、重載:同一類中,函數名相同,參數和返回值不同(相同範圍(同一個類中)、函數名字相同、參數不同、virtual關鍵字可有可無) 覆蓋:派生類覆蓋基類的虛函數,實現接口的重用(不同範圍(基類和派生類)、函數名字相同、參數相同、基類中必須有virtual關鍵字(必須是虛函數)) 重寫:派生類屏蔽了其同名的基類函數(不同範圍(基類和派生類)、函數名字相同、參數不同或者參數相同且無virtual關鍵字) 6、new、delete、malloc、free之間的關係 new/delete,malloc/free都是動態分配內存的方式 1)malloc對開闢的空間大小嚴格指定,而new只需要對象名 2)new為對象分配空間時,調用對象的構造函數,delete調用對象的析構函數 既然有了malloc/free,C++中為什麼還需要new/delete呢? 因為malloc/free是庫函數而不是運算符,不能把執行構造函數和析構函數的功能強加於malloc/free. 7.STL庫:(轉載:https://blog.csdn.net/qq_41431457/article/details/88898925) STL(StandardTemplateLibrary),即標準模板庫,是一個具有工業強度的,高效的C++程序庫。

vector:是支持隨機訪問的迭代器                                                  vector的動態增加大小的時候,並不是在原有的空間上持續新的空間(無法保證原空間的後面還有可供配置的空間),而是以原大小的兩倍另外配置一塊較大的空間,然後將原內容拷貝過來,並釋放原空間。

在VS下是1.5倍擴容,在GCC下是2倍擴容。

#include #include usingnamespacestd; //iterator模式:提供一種方法,使之能依次訪問容器內的各個元素,而又不暴露該聚合物內部的表述方式。

voidprint(vector&v){ for(vector::iteratori=v.begin();i!=v.end();i++){ cout<v1; for(inti=0;i<10;i++){ v1.push_back(i); } print(v1); vectorv2(v1.begin(),v1.end()); print(v2); vectorv3(10,100); print(v3); vectorv4(v3); print(v4); //賦值opertor= vectorv5; v5=v1; print(v5); //assign賦值 vectorv6; v6.assign(v1.begin(),v1.end()); print(v6); vectorv7; v7.assign(10,1);//10個1 print(v7); //插入,第一個參數是迭代器 v7.insert(v7.begin(),1000); print(v7); v7.insert(v7.begin(),3,11111000); print(v7); } intmain() { test01(); return0; }   8、const const修飾類的成員變量,表示常量不可能被修改 const修飾類的成員函數,表示該函數不會修改類中的數據成員,不會調用其他非const的成員函數 static: 12、關鍵字static的作用 1)函數體內:static修飾的局部變量作用範圍為該函數體,不同於auto變量,其內存只被分配一次,因此其值在下次調用的時候維持了上次的值 2)模塊內:static修飾全局變量或全局函數,可以被模塊內的所有函數訪問,但是不能被模塊外的其他函數訪問,使用範圍限制在聲明它的模塊內 3)類中:修飾成員變量,表示該變量屬於整個類所有,對類的所有對象只有一份拷貝 4)類中:修飾成員函數,表示該函數屬於整個類所有,不接受this指針,只能訪問類中的static成員變量 9.堆和棧的區別 堆heap 低址-高址 內存手動釋放 效率低 函數的參數值、局部變量 棧stack  高-低 自動 效率高 new 10、C++中的內存管理 在C++中,內存被分成五個區:棧、堆、代碼區、全局/靜態存儲區、常量區 代碼區: 棧:存放函數的參數和局部變量,編譯器自動分配和釋放 堆:new關鍵字動態分配的內存,由程序員手動進行釋放,否則程序結束後,由操作系統自動進行回收 全局/靜態存儲區:存放全局變量和靜態變量 常量區:存放常量,不允許被修改 <> Copyright©2021it編輯入門教程  itcode123.techAllRightsReserved.



請為這篇文章評分?