C 基礎知識複習(一)

2022-08-04 11:24:08 字數 3955 閱讀 9922

資料型別,常量與變數部分:(發現有些點竟然這麼多年第一次發現)

c++基本資料型別有哪些:

答:整型,浮點型,void型。

注:其他各種資料型別均是這三種型別的擴充,另外void型別在實際程式中經常用來表示指標無型別,指向整塊記憶體,程式可以自行根據需要進行解析。

2. 整型的分類及區別:

答:表示整數,字元,布林值的資料型別統稱整形。根據長短修飾詞和符號修飾詞不同可分為13類。長短修飾符:short 半個機器字長,int 乙個機器字長,long 兩個機器字長。符號修飾符: signed 帶符號的,unsigned 無符號的,區別在表示範圍上。char, unsigned char, signed char, int, unsigned int, signed int, short int, unsigned short int, signed short int, long int, unsigned long int, signed long int, bool.

注:具體記每種資料型別佔幾個位元組意義不大,因為這是由平台決定的,記機器字長是個明智選擇。

3. 簡單介紹一下c++中的常量:

答:constant常量是用來標示,測量和比較的在程式執行前確定,執行過程中不會改變的值。可分為:

整形常量:注意整形常量可以指定進製,常量前如有0x,則為十六進製制,如有0則為八進位制。同時可以有字尾符號,不區分大小寫,l代表長整形,u代表無符號。

浮點型常量:注意浮點型只有十進位制,預設為double,絕對值小於1時小數點前的0可以省略,float表示範圍在+-e38,double在+-e308,字尾同樣不區分大小寫,f代表有符號,l代表長雙精度。

字元型常量:可用ascii表示乙個字元,也可用單引號加反斜槓表示轉義字元,如'\x2f'表示十六進製制的2f。

字串常量:用雙引號括起來的字元。

轉義字元常量:\n換行 \r回車 \0空格

位址常量

注:比如qrep的版本資訊,不同版本的版本號就是寫死的。

4. 常量與變數的區別:

答:常量在定義時必須初始化,且值不可改變,常量不可定址,它的位址不允許賦給非常量指標,變數可以定址。常量編譯執行效率較高。

5. 操作符有哪些:

答: 操作符又稱運算子,按運算元分為一元運算子,二元運算子和三元操作符。 按功能不同,分為算術操作符,關係操作符,邏輯操作符,位操作符,賦值操作符,自增減操作符,箭頭操作符,條件操作符,sizeof操作符,逗號操作符。

注:逗號表示式的值為最後乙個表示式的值和型別。但在求值時,按從左到右的順序分別計算個表示式的值。

6. 操作符的優先順序:

答: 共16個等級,總體而言,單目高於多目,算術高於邏輯。三個從右至左結合的,單目運算子,條件運算子和賦值運算子。

7. 指標的自增減操作有何不同:

答: 指標的自增減,指的是指向的位址的增減。比如char *p=&str[0]; ++p 是將指標指向str[1], ++*p是將str[0]中的資料加1,比如說原來為c,加完變成d。

8. 變數有哪幾種初始化方式?

答: 兩種,賦值初始化和直接初始化。直接初始化效率更高。

9. 宣告和定義的區別?

答: 宣告主要表明名稱和型別,定義具體分配了空間。函式的宣告和實現比較常見,變數的宣告多見於重複定義或者全域性變數。

10. c++中的作用域?

答: 作用域分為全域性作用域,區域性作用域和語句作用域。作用域是可以巢狀的,

11. 變數的儲存型別有哪些?

答: 變數的儲存型別決定了其生命週期,儲存型別的說明符有4個, auto,register,static和extern。

auto和register稱為自動儲存型別,auto是預設的,生命週期始於塊的執行,結束於塊的結束。在棧中,執行結束自動釋放,生命期和作用域一致。暫存器變數不建議使用,因為編譯器大多會進行優化。

static靜態儲存型別,儲存於全域性資料區,如未顯示初始化,系統會自動賦值0,且初始化只進行一次,具有全域性生命週期,根據定義位置不同,分為區域性靜態變數和全域性靜態變數,也稱內部靜態變數和外部靜態變數。

extern外部儲存變數,程式中的全域性變數和函式預設是外部的,其他程式可以通過extern宣告來使用它們。

12. 程式的儲存區域有哪些,各自特點如何?

答: 程式的儲存區域包括**區,靜態資料區,棧區和堆區,相應的生命週期分為靜態生命期,區域性生命期和動態生命期。

靜態資料區的資料具有靜態生命期,全域性變數,靜態全域性變數和靜態區域性變數都存在於靜態資料區。系統會自動為其初始化,函式駐留在**區,同樣具有靜態生命期。

棧區的資料具有區域性生命期,如果未初始化,數值是隨機的,有一點要注意,靜態區域性變數,具有區域性作用域,但具有靜態生命週期。

堆具有動態生命期,主要通過new和delete來處理記憶體,同時也說法認為單提出來有乙個自由儲存區,由malloc和free操作。

13. 什麼是引用?

答: 引用是物件的另乙個名字,通過&符號來定義,如int i=0; int &ref=i; 用引用有兩個目的:第一是為了提高效能,使用引用不會造成物件的拷貝,這裡的"自定義類 &"就是這個目的,但是如果不想函式修改這個引數,最好在前面加上const。第二是為了能夠修改物件。這裡的"istream &"就是這個目的,作為引數,如果不傳入引用,那麼這個stream就是形參,函式裡修改這個引數不會造成函式外變數的改變,顯然是不行的。但是要注意const引用的原物件也要是const的。

語法部分:

14. while,do while:容易忘記,do while後面要有個分號。

15. 在switch語句中,只能在最後乙個case或者default後定義變數。

16. 遞迴分為邊界條件,遞迴前進段和遞迴返回段三部分。當邊界條件不滿足時遞迴前進,滿足時遞迴返回。

17. 漢諾塔問題:可以用遞迴和非遞迴的方式解決,注意三根柱子並沒有使用順序的限制,非遞迴可以用棧來模擬解決過程,關鍵就是把大於1的盤子數量分解為1的解決步驟。

輸入輸出部分:

18. 注意c++本身並不提供輸入輸出操作,是由標準庫提供的。

19. 幾種io的分類:

標準i/o:對標準輸入輸出裝置的操作

檔案i/o:對外存磁碟上檔案的輸入輸出

串i/o:對記憶體中字串儲存空間的輸入輸出

20. 各種i/o類:基類 ios

直接派生出的四個大類:輸入流istream,輸出流ostream,檔案流fstreambase和字串流strstreambase。

輸入檔案流類ifstream,輸出檔案流類ofstream

輸入字串流類istrstream,輸出字串流類ostrstream

功能更集中的:輸入輸出流類iostream,輸入輸出檔案流類fstream,輸入輸出字串流類strstream。

iostream標準類庫,用這個就足夠了。

21. 過載輸入輸出的目的和方法:

答:過載在相同的範圍內為同乙個函式名提供多個定義,委託編譯器呼叫時進行選擇,提供更為簡潔的**。

ostream& operator<< (ostream &out, const classname &object)

輸入流將ostream換為istream即可。

22. 如何讀取乙個檔案:

答:#include fstream openfile(filepath); openfile.eof(); openfile.fail(); openfile.close(); 使用cin,get或者getline讀取字元。寫入的時候可以用ofstream,.open, .close. .clear. 《操作符可以用來寫。

複習C (一) 基礎知識

命名空間讓廠商能夠將其產品封裝在乙個叫做命名空間的單元中,這樣就可以用命名空間的名稱來指出想使用哪個廠商的產品。例 microflop wanda piscine wanda 僅當頭檔案沒有副檔名h時,各種c 編譯器的標準組建才被放置在命名空間std裡。std,即standard,c 標準庫中的函式...

c基礎知識複習

c的發展歷程 c原本是為了開發unix作業系統而設計的語言 如此說,應該c比unix更早問世,而事實並非如此,最早的unix是由彙編寫的 c語言本來是美國人開發的,解讀c的宣告,最好還是用英語來讀 解讀c宣告的步驟 1 首先著眼於識別符號 變數名或者函式名 2 從距離識別符號最近的地方開始,依照優先...

C語言基礎知識複習

整型常量有3種表示方式 十進位制整數。例如,123 456 0。八進位制整數。以0開頭的整數是八進位制數。例如,0123表示8進製數123,等於十進位制數83。十六進製制整數。以0x或0x開頭的整數是十六進製制數。例如,0x123或0xl23表示十六進製制數123,等於十進位制數291。如果在整型常...