c面試題及答案
1、三種基本的數(shù)據(jù)模型
答:按照數(shù)據(jù)結(jié)構(gòu)類(lèi)型的不同,將數(shù)據(jù)模型劃分為層次模型、網(wǎng)狀模型和關(guān)系模型。
2、結(jié)構(gòu)與聯(lián)合有和區(qū)別?
答:(1). 結(jié)構(gòu)和聯(lián)合都是由多個(gè)不同的數(shù)據(jù)類(lèi)型成員組成, 但在任何同一時(shí)刻, 聯(lián)合中只存放了一個(gè)被選中的成員(所有成員共用一塊地址空間), 而結(jié)構(gòu)的所有成員都存在(不同成員的存放地址不同)。
(2). 對(duì)于聯(lián)合的不同成員賦值, 將會(huì)對(duì)其它成員重寫(xiě), 原來(lái)成員的值就不存在了, 而對(duì)于結(jié)構(gòu)的不同成員賦值是互不影響的
3、什么是預(yù)編譯,何時(shí)需要預(yù)編譯?
答:預(yù)編譯又稱(chēng)為預(yù)處理,是做些代碼文本的替換工作。處理#開(kāi)頭的.指令,比如拷貝#include 包含的文件代碼,#define 宏定義的替換,條件編譯等,就是為編譯做的預(yù)備工作的階段,主要處理#開(kāi)始的預(yù)編譯指令,預(yù)編譯指令指示了在程序正式編譯前就由編譯器進(jìn)行的操作,可以放在程序中的任何位置。
c 編譯系統(tǒng)在對(duì)程序進(jìn)行通常的編譯之前,先進(jìn)行預(yù)處理。c 提供的預(yù)處理功能主要有以下三種:1)宏定義 2)文件包含 3)條件編譯
1、 總是使用不經(jīng)常改動(dòng)的大型代碼體。
2、程序由多個(gè)模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同的編譯選項(xiàng)。在這種情況下,可以將所有包含文件預(yù)編譯為一個(gè)預(yù)編譯頭。
4、描述內(nèi)存分配方式以及它們的區(qū)別?
答:1) 從靜態(tài)存儲(chǔ)區(qū)域分配。內(nèi)存在程序編譯的時(shí)候就已經(jīng)分配好,這塊內(nèi)存在程序的整個(gè)運(yùn)行期間都存在。例如全局變量,static 變量。
2) 在棧上創(chuàng)建。在執(zhí)行函數(shù)時(shí),函數(shù)內(nèi)局部變量的存儲(chǔ)單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結(jié)束時(shí)這些存儲(chǔ)單元自動(dòng)被釋放。棧內(nèi)存分配運(yùn)算內(nèi)置于處理器的指令集。
3) 從堆上分配,亦稱(chēng)動(dòng)態(tài)內(nèi)存分配。程序在運(yùn)行的時(shí)候用 malloc 或 new 申請(qǐng)任意多少的內(nèi)存,程序員自己負(fù)責(zé)在何時(shí)用 free 或 delete 釋放內(nèi)存。動(dòng)態(tài)內(nèi)存的生存期由程序員決定,使用非常靈活,但問(wèn)題也最多
5、局部變量能否和全局變量重名?
答:能,局部會(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)
6、如何引用一個(gè)已經(jīng)定義過(guò)的全局變量?
答 、可以用引用頭文件的方式,也可以用 extern 關(guān)鍵字,如果用引用頭文件方式來(lái)引用某個(gè)在頭文件中聲明的全局變量,假定你將那個(gè)變量寫(xiě)錯(cuò)了,那么在編譯期間會(huì)報(bào)錯(cuò),如果你用 extern 方式引用時(shí),假定你犯了同樣的錯(cuò)誤,那么在編譯期間不會(huì)報(bào)錯(cuò),而在連接期間報(bào)錯(cuò)。
7、全局變量可不可以定義在可被多個(gè).C 文件包含的頭文件中?為什么?
答 、可以,在不同的 C 文件中以 static 形式來(lái)聲明同名全局變量。
可以在不同的 C 文件中聲明同名的全局變量,前提是其中只能有一個(gè) C 文件中對(duì)此變量賦初值,此時(shí)連接不會(huì)出錯(cuò)。
8、語(yǔ)句 for( ;1 ;)有什么問(wèn)題?它是什么意思?
答 、和 while(1)相同,無(wú)限循環(huán)。
9、do„„while 和 while„„do 有什么區(qū)別?
答 、前一個(gè)循環(huán)一遍再判斷,后一個(gè)判斷以后再循環(huán)。
【c面試題及答案】相關(guān)文章:
精選C++面試題及答案10-03
C/C++面試題目11-21
Adobe面試題及答案11-09
微軟面試題及答案09-07
嵌入式C語(yǔ)言面試題(附答案)09-24
英語(yǔ)面試題目及答案07-20
英語(yǔ)教師面試題及答案09-05
linux認(rèn)證面試題及答案09-16