1 用#define聲明一個(gè)常數(shù),表明1年中有多少秒(忽略閏年問(wèn)題)?答案: #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2 寫一個(gè)“標(biāo)準(zhǔn)”宏MIN,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)?答案:
3 Heap與Stack的差別?答案:Heap是堆,Stack是棧。 Stack的空間由系統(tǒng)自動(dòng)分配/釋放,Heap上的空間手動(dòng)分配/釋放。 Stack空間有限,Heap是很大的自由存儲(chǔ)區(qū),malloc函數(shù)分配的內(nèi)存空間即在堆上。 網(wǎng)上經(jīng)典例子: int a = 0; //全局初始化區(qū) char *p1;//全局未初始化區(qū) void main(void) { int b; //棧 char s[] = 'abc'; //棧 char *p2; //棧 char *p3 = '123456'; //123456\0在常量區(qū),p3在棧上 static int c =0; //全局(靜態(tài))初始化區(qū) p1 = (char *)malloc(10); //堆 p2 = (char *)malloc(20); //堆 } 4 用變量a給出下面的定義A.一個(gè)整型數(shù)? 答案:int a; 5 關(guān)鍵字static的作用是什么?A.在函數(shù)體,一個(gè)被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過(guò)程中維持其值不變; B.在模塊內(nèi)(但在函數(shù)體外),一個(gè)被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問(wèn),但不能被模塊外其它函數(shù)訪問(wèn)。它是一個(gè)本地的局變量; C.在模塊內(nèi),一個(gè)被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個(gè)函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用; 6 關(guān)鍵字const有什么含意?答案:const意味著'只讀'。 如果回答'const意味著常數(shù)',面試官會(huì)覺(jué)得你只是一個(gè)業(yè)余的人。 7 下面的聲明都是什么意思?代碼:
8 關(guān)鍵字volatile有什么含意?答案:一個(gè)定義為volatile的變量是說(shuō)這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。 精確地說(shuō)就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。 9 sizeof和strlen的區(qū)別?答案:sizeof是運(yùn)算符,在編譯時(shí)即計(jì)算好了;而strlen是函數(shù),要在運(yùn)行時(shí)才能計(jì)算。 10 在某工程中,要求設(shè)置一絕對(duì)地址為0x67a9的整型變量的值為0xaa66。編譯器是一個(gè)純粹的ANSI編譯器。寫代碼去完成這一任務(wù)?答案: int *p; p = (int*)0x67a9; *p = 0xaa66; 11 給定一個(gè)整型變量a,寫兩段代碼,第一個(gè)設(shè)置a的bit 3,第二個(gè)清除a 的bit 3。在以上兩個(gè)操作中,要保持其它位不變?答案:
12 下面函數(shù)錯(cuò)誤嗎?代碼: int square(volatile int *ptr) { return *ptr * *ptr; } 答案:錯(cuò)誤; 正確寫法:
|
|