- 相關(guān)推薦
c語言面試基本題
1、隊(duì)列和棧有什么區(qū)別?
答:隊(duì)列先進(jìn)先出,棧后進(jìn)先出
2、不能做 switch()的參數(shù)類型
答 :switch 的參數(shù)不能為實(shí)型。
3、局部變量能否和全局變量重名?
答:能,局部會(huì)屏蔽全局。要用全局變量,需要使用"::"
局部變量可以與全局變量同名,在函數(shù)內(nèi)引用這個(gè)變量時(shí),會(huì)用到同名的局部變量,而不會(huì)用到全局變量。對(duì)于有些編譯器而言,在同一個(gè)函數(shù)內(nèi)可以定義多個(gè)同名的局部變量,比如在兩個(gè)循環(huán)體內(nèi)都定義一個(gè)同名的局部變量,而那個(gè)局部變量的作用域就在那個(gè)循環(huán)體內(nèi)
4、如何引用一個(gè)已經(jīng)定義過的全局變量?
答 、可以用引用頭文件的方式,也可以用 extern 關(guān)鍵字,如果用引用頭文件方式來引用某個(gè)在頭文件中聲明的全局變量,假定你將那個(gè)變量寫錯(cuò)了,那么在編譯期間會(huì)報(bào)錯(cuò),如果你用 extern 方式引用時(shí),假定你犯了同樣的錯(cuò)誤,那么在編譯期間不會(huì)報(bào)錯(cuò),而在連接期間報(bào)錯(cuò)。
5、.h 頭文件中的 ifndef/define/endif 的作用?
答:防止該頭文件被重復(fù)引用。
6、#i nclude 與 #i nclude "file.h"的區(qū)別?
答:前者是從 Standard Library 的路徑尋找和引用 file.h,而后者是從當(dāng)前工作路徑搜尋并引用 file.h。
7、描述實(shí)時(shí)系統(tǒng)的基本特性
答 :在特定時(shí)間內(nèi)完成特定的任務(wù),實(shí)時(shí)性與可靠性。
8、全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別?
答 :全局變量?jī)?chǔ)存在靜態(tài)數(shù)據(jù)區(qū),局部變量在堆棧中。
9、什么是平衡二叉樹?
答 :左右子樹都是平衡二叉樹 且左右子樹的深度差值的絕對(duì)值不大于 1。
10、關(guān)鍵字 static 的作用是什么?
這個(gè)簡(jiǎn)單的問題很少有人能回答完全。在 C 語言中,關(guān)鍵字 static 有三個(gè)明顯的作用:
1). 在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。
2). 在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個(gè)本地的全局變量。
3). 在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。
大多數(shù)應(yīng)試者能正確回答第一部分,一部分能正確回答第二部分,同是很少的人能懂得第三部分。這是一個(gè)應(yīng)試者的嚴(yán)重的缺點(diǎn),因?yàn)樗@然不懂得本地化數(shù)據(jù)和代碼范圍的好處和重要性。
11、“引用”與指針的區(qū)別是什么?
答 、1) 引用必須被初始化,指針不必。
2) 引用初始化以后不能被改變,指針可以改變所指的對(duì)象。
3) 不存在指向空值的引用,但是存在指向空值的指針。指針通過某個(gè)指針變量指向一個(gè)對(duì)象后,對(duì)它所指向的變量間接操作。程序中使用指針,程序的可讀性差;而引用本身就是目標(biāo)變量的別名,對(duì)引用的操作就是對(duì)目標(biāo)變量的操作。
流操作符<<和>>、賦值操作符=的返回值、拷貝構(gòu)造函數(shù)的參數(shù)、賦值操作符=的參數(shù)、其它情況都推薦使用引用
12、堆棧溢出一般是由什么原因?qū)е碌?
答 :1.沒有回收垃圾資源
2.層次太深的遞歸調(diào)用
http://www.fuchuonang.cn/