1.請簡要說明C和C++的區別
C語言是面向程序的編程語言,重點在于演算法和資料結構,以及怎樣解決問題,
C++是面向物件編程,考慮的是構造一個什么樣的物件來解決問題,所以C與C++的最大區別在于它們解決問題的思想方法不一樣,此外C++幾乎完全兼容C語言;支持泛型編程、例外處理等,
2.必須在建構式初始化式里進行初始化的資料成員有哪些,為什么?
(1)const常量成員,因為常量只能初始化賦值,之后不能改變,所以必須放在初始化串列中;
(2)參考型別,參考必須在定義的時候初始化,并且不能重新賦值,所以也要寫在初始化串列中;
(3)沒有默認建構式的類所創建的成員,因為使用初始化串列可以不必呼叫默認建構式來初始化,而是呼叫拷貝構造,
3.指標與參考的區別
(1) 指標是一個物體,而參考僅是一個別名;
(2) 參考直接當做變數使用,指標需要解參考;
(3) 參考只能在定義時被初始化,之后不可改變;指標可變;
(4) 參考不能為空,指標可以為空;
(5) “sizeof 參考”得到的是所指向變數的大小,而“sizeof 指標”得到的是指標本身(變數地址)的大小;
(6)程式為指標變數分配記憶體區域,而參考不需要分配記憶體區域,
4.全域變數和區域變數有什么區別?記憶體是如何分配的?作業系統和編譯器是如何區分的?
區域變數:定義在函式內
存盤在stack
函式呼叫開始到函式執行結束
只能在函式內使用
全域變數:定義在函式外
data(初始化)或bss(未初始化)
main運行前定義完成,程式結束后釋放
程式的任何位置都可以使用
同名時,在函式內區域變數會屏蔽全域變數, 作業系統和編譯器通過它們的地址來分辨,
5.死鎖產生的原因是什么?死鎖的四個必要條件是什么?如何解除死鎖?
原因是多個行程或執行緒互相等待對方的資源,在得到新的資源之前不會釋放自己的資源,這樣就形成了死回圈,
*資源互斥:*資源只有兩種狀態,只有可用和不可用兩狀態,不能同時使用,同一時刻只能被一個行程或執行緒使用,
*占有且請求:*已經得到資源的行程或執行緒,繼續請求新的資源,并持續占有舊的資源,
*資源不可剝奪:*資源已經分配行程或執行緒后,不能被其它行程或執行緒強制性獲取,除非資源的占有者主動釋放,
*環路等待:*死鎖發生時,系統中必定有兩個或兩個以上的行程或執行緒組成一條等待環路,
可以重啟或者手動撤消行程,剝奪資源,打破鎖定
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/171561.html
標籤:其他
上一篇:圖片標簽及應用探索
