1、對于一個頻繁使用的短小函數,在c語言中應用什麼實作,在c++中應用什麼實作
答:c:宏定義;c++:inline内聯函數
2、全局變量和局部變量的差別?
答:
1、生命周期不同:
全局變量:随主程式建立而建立,随主程式結束而銷毀。
局部變量:函數或者{}括号内部,退出或執行完就銷毀
2、作用域不同:
全局變量:源檔案内所有函數都可以使用
局部變量:函數内部或者{}括号内部有效,隻能局部使用
3、記憶體配置設定不同:
全局變量:全局資料段并且在程式運作的時候加載
局部變量:配置設定在堆棧裡
3、在申請記憶體找不大足夠大的記憶體塊,malloc和new将傳回NULL指針,記憶體申請失敗,怎麼處理記憶體耗盡?
答:直接return
4、如何判斷一個作業系統是16位還是32位系統
1、使用變量指針*p,sizeof(p) == 2 為16位,==4 為32位
2、unsigned int a = ~0; if( a > 65536 ) 為32位,否則 16位
5、為什麼數組名做參數會改變數組内容?
答:數組名就是數組的首位址
6、析構函數和虛函數的用法和作用?
析構函數:是c++特殊的類成員函數,沒傳回值、沒參數、不能調用。在類對象執行完畢,作用是銷毀并釋放記憶體。
虛函數:是c++多态的一種表現,使用虛函數可以動态綁定,當然也會以系統開銷為代價的
7、引用和指針有什麼差別?
引用:必須初始化;初始化後不能改變;不存在指向空值
指針:不必初始化;指針可以改變所指對象;指針可以指向空值
8、虛函數隻能借助引用或者指針來達到多态的效果。
9、在c++中能否有虛構造函數?
答:不能,隻能有虛析構函數。
10、重載、重寫、重定義的差別?
重載:類對象的同名不同參函數
重寫:子類繼承父類的函數
重定義:子類繼承父類的虛函數
11、i++和++i的效率比較
-》内建資料類型的情況,效率一樣
-》自定義資料類型的情況,++i效率高
12、了解内聯函數和宏的差別
-》内聯函數在編譯時展開,宏在預編譯時展開