軟體/韌體工程師《面試重點與觀念複習》: 轉自ptt: C/C++常見問題十三誡

本文章 目錄:
--- 面試須知與應答技巧
--- 資料結構 / 變數儲存與記憶體
--- 程式語言 / 演算法
--- 作業系統 / 多執行緒(多程序)的觀念與實作控制
--- 轉自ptt: [重要] 發文前務必閱讀:C/C++常見問題十三誡
--- 擬真試題1/擬真試題2/擬真試題3/擬真試題4
--- 直接列出考古題1(精華完整53題含解答)
--- 直接列出考古題2(精華完整35題含解答)
--- 深度討論考古題1(DEMO完整10題含解答) 選擇使用C,C++,C#或JAVA
--- 深度討論考古題2(DEMO完整11題含解答) 選擇使用C,C++,C#或JAVA
--- 撲克牌(大老二)洗牌與牌型判斷(JAVA)
--- Python基本教學
--- Leetcode實戰討論

轉自ptt: [重要] 發文前務必閱讀:C/C++常見問題十三誡

1. 不可以提取不知指向何方的指標(指標變數必需先指向某個可以合法操作的空間,才能進行操作):
2. 不能存取超過陣列既定範圍的空間
3. 不可以提取不知指向何方的指標

4. 不要試圖用 char* 去更改一個”字串常數”:

5. 不能在函式中回傳一個指向區域性自動變數的指標
(區域變數在離開該區域時被消滅,因此呼叫端得到的指標所指的字串內容失效了,但如果指標內容是用動態的方式配置,這塊空間是在heap而非stack上,heap空間不會自動回收,因此這塊空間在離開函式後依然有效,但要記得free掉記憶體):

6. 不可以只做 malloc(), 而不做相應的 free()

7. 在數值運算、賦值或比較中不可以隨意混用不同型別的數值

8. 在一個運算式中,不能對一個基本型態的變數修改其值超過一次以上
(C/C++並沒有強制規定參數會由哪個方向開始處理(不像Java是由左到右),因此可能會造成與預期不符的情況):

9. 在 Macro 定義中, 務必為它的參數個別加上括號():

10. 不可以在 stack 設置過大的變數
(編譯器會自行決定 stack 的上限,可能是數KB 或數十 KB,當變數所需的空間過大時,很容易造成 stack overflow,程式亦隨之當掉,若真正需要如此大的空間,那麼建議配置在 heap 上,或是採用static / globla variabl):

11. 使用浮點數精確度造成的誤差問題
根據 IEEE 754 的規範,又電腦中是用有限的二進位儲存數字,因此常有可能因為精確度而造成誤差,例如加減乘除,等號大小判斷,分配律等數學上常用到的操作,很有可能因此而出錯(不成立)

12. 不要猜想二維陣列可以用 pointer to pointer 來傳遞:

13. 函式內 new 出來的空間記得要讓主程式的指標接住:


繼續閱讀…
本文章 目錄:
--- 面試須知與應答技巧
--- 資料結構 / 變數儲存與記憶體
--- 程式語言 / 演算法
--- 作業系統 / 多執行緒(多程序)的觀念與實作控制
--- 轉自ptt: [重要] 發文前務必閱讀:C/C++常見問題十三誡
--- 擬真試題1/擬真試題2/擬真試題3/擬真試題4
--- 直接列出考古題1(精華完整53題含解答)
--- 直接列出考古題2(精華完整35題含解答)
--- 深度討論考古題1(DEMO完整10題含解答) 選擇使用C,C++,C#或JAVA
--- 深度討論考古題2(DEMO完整11題含解答) 選擇使用C,C++,C#或JAVA
--- 撲克牌(大老二)洗牌與牌型判斷(JAVA)
--- Python基本教學
--- Leetcode實戰討論

發表迴響