資源描述:
《C筆試面試題及答案解析(一)》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、1錯(cuò)題1.1基礎(chǔ)1)下列選項(xiàng)中,合法的C語(yǔ)言關(guān)鍵字是DA.VARB.cherC.integerD.defaultdefault只用在switch語(yǔ)句中。2)若執(zhí)行完成下列語(yǔ)句:inta=3,b=6,c;c=a∧b<<2;則變量c的二進(jìn)制值為:DA.00011100B.00010100C.0001000D.000110113)設(shè)有以下定義或語(yǔ)句,則輸出的結(jié)果是?A(用small模式編譯,指針變量占2個(gè)字節(jié))structdate{long*cat;structdate*next;doubledog;}too;printf("%d",sizeof
2、(too));A.20B.16C.14D.124)設(shè)x、y、t均為int型變量,則執(zhí)行語(yǔ)句:x=y=3;t=++x
3、
4、++y;后,y的值為CA.不定值B.4C.3D.15)執(zhí)行下列語(yǔ)句中,sum變量的值是:Dintsum=0for(inti=0;i<10;i++,sum+=i);A.45B.55C.0D.編譯錯(cuò)誤6)請(qǐng)寫(xiě)出floatx與“零值”比較的if語(yǔ)句:【標(biāo)準(zhǔn)答案】constfloatEPSINON=0.00001;if((x>=-EPSINON)&&(x<=EPSINON)不可將浮點(diǎn)變量用“==”或“!=”與數(shù)字比較,應(yīng)該設(shè)法轉(zhuǎn)化成
5、“>=”或“<=”此類(lèi)形式。7)以下為L(zhǎng)inux下的32位C程序,請(qǐng)計(jì)算sizeof的值。charstr[]=“Hello”;char*p=str;intn=10;請(qǐng)計(jì)算(1)sizeof(str)=(2)sizeof(p)=(3)sizeof(n)=【標(biāo)準(zhǔn)答案】(1)6、(2)4、(3)48)請(qǐng)問(wèn)以下代碼有什么問(wèn)題:char*s="AAA";printf("%s",s);s[0]='B';printf("%s",s);有什么錯(cuò)?【標(biāo)準(zhǔn)答案】"AAA"是字符串常量。s是指針,指向這個(gè)字符串常量,所以聲明s的時(shí)候就有問(wèn)題。cosntchar*
6、s="AAA";然后又因?yàn)槭浅A浚詫?duì)是s[0]的賦值操作是不合法的。constchar*p="123";p[1]='3';//會(huì)報(bào)錯(cuò)p="456";//不會(huì)報(bào)錯(cuò)constchar*只是說(shuō)指針指向的內(nèi)容不可變,但指針本身可以再賦值假設(shè)你的程序是char*findArg(char*s){returns;}這個(gè)時(shí)候,你如果傳constchar*進(jìn)去,那么好一些的編譯器,會(huì)知道,你傳回的函數(shù)返回值,也是constchar*,也就是指針指向的內(nèi)容不可寫(xiě)。所以如果你傳進(jìn)去的是constchar*,最好還是把char*name寫(xiě)成constchar*
7、name,因?yàn)閏har*name可以對(duì)指針指向的內(nèi)容進(jìn)行修改。用強(qiáng)制轉(zhuǎn)換當(dāng)然也可以,但是constchar*name2="123";char*name=(char*)name2;如果你對(duì)name指向的內(nèi)容進(jìn)行改變,如name[2]='4';"123"是常量,對(duì)常量進(jìn)行修改,你的程序就會(huì)發(fā)生不可預(yù)知的錯(cuò)誤char*findArg(char*){.....}如果你這個(gè)函數(shù),對(duì)傳入的參數(shù),不會(huì)對(duì)指針指向的內(nèi)容進(jìn)行修改,最好寫(xiě)成char*findArg(constchar*){....}或constchar*findArg(constchar*){
8、....}9)給定結(jié)構(gòu)structA{chart:4;chark:4;unsignedshorti:8;unsignedlongm;};問(wèn)sizeof(A)=?【標(biāo)準(zhǔn)答案】810)structname2{charstr;intnum;shortx;};求sizeof(name2)?【標(biāo)準(zhǔn)答案】1232位64位char11int4大多數(shù)4,少數(shù)8short22long48float44double88指針48(單位都為字節(jié))結(jié)構(gòu)體(struct):比較復(fù)雜,對(duì)齊問(wèn)題。聯(lián)合(union):所有成員中最長(zhǎng)的。枚舉(enum):根據(jù)數(shù)據(jù)類(lèi)型。(1)
9、結(jié)構(gòu)體變量中成員的偏移量必須是成員大小的整數(shù)倍(0被認(rèn)為是任何數(shù)的整數(shù)倍)(2)結(jié)構(gòu)體大小必須是所有成員大小的整數(shù)倍,也即所有成員大小的公倍數(shù)。結(jié)構(gòu)體類(lèi)型需要考慮到字節(jié)對(duì)齊的情況,不同的順序會(huì)影響結(jié)構(gòu)體的大小。11)關(guān)鍵字volatile有什么含意?并給出三個(gè)不同的例子?!緟⒖即鸢浮恳粋€(gè)定義為volatile的變量是說(shuō)這變量可能會(huì)被意想不到地改變,這樣,編譯器就不會(huì)去假設(shè)這個(gè)變量的值了。精確地說(shuō)就是,優(yōu)化器在用到這個(gè)變量時(shí)必須每次都小心地重新讀取這個(gè)變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個(gè)例子:1).并行設(shè)
10、備的硬件寄存器(如:狀態(tài)寄存器)2).一個(gè)中斷服務(wù)子程序中會(huì)訪問(wèn)到的非自動(dòng)變量(Non-automaticvariables)3).多線程應(yīng)用中被幾個(gè)任務(wù)共享的變量12)#inc