




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
標(biāo)準(zhǔn)c語言筆試題1.局部變量能否和全局變量重名?(華為)解析:能,局部會(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)。3.如何引用一個(gè)已經(jīng)定義過的全局變量?(華為)解析:extern可以用引用頭文件的方式,也可以用extern關(guān)鍵字,如果用引用頭文件方式來引用某個(gè)在頭文件中聲明的全局變理,假定你將那個(gè)編寫錯(cuò)了,那么在編譯期間會(huì)報(bào)錯(cuò),如果你用extern方式引用時(shí),假定你犯了同樣的錯(cuò)誤,那么在編譯期間不會(huì)報(bào)錯(cuò),而在連接期間報(bào)錯(cuò)。4.static全局變量與普通的全局變量有什么區(qū)別?解析:1)全局變量(外部變量)的說明之前再冠以static就構(gòu)成了靜態(tài)的全局變量。全局變量本身就是靜態(tài)存儲(chǔ)方式,靜態(tài)全局變量當(dāng)然也是靜態(tài)存儲(chǔ)方式從以上分析可以看出,static全局變量與普通的全局變量有什么區(qū)別:static全局變量只初使化一次,防止在其他文件單元中被引用;static局部變量和普通局部變量有什么區(qū)別:static局部變量只被初始化一次,下一次依據(jù)上一次結(jié)果值;static函數(shù)與普通函數(shù)有什么區(qū)別:static函數(shù)在內(nèi)存中只有一份,普通函數(shù)在每個(gè)被調(diào)用中維持一份拷貝5.進(jìn)程和線程的差別(微軟亞洲)解析:答:線程是指進(jìn)程內(nèi)的一個(gè)執(zhí)行單元,也是進(jìn)程內(nèi)的可調(diào)度實(shí)體.與進(jìn)程的區(qū)別:(1)調(diào)度:線程作為調(diào)度和分配的基本單位,進(jìn)程作為擁有資源的基本單位(2)并發(fā)性:不僅進(jìn)程之間可以并發(fā)執(zhí)行,同一個(gè)進(jìn)程的多個(gè)線程之間也可并發(fā)執(zhí)行(3)擁有資源:進(jìn)程是擁有資源的獨(dú)立單位,線程不擁有系統(tǒng)資源,但可以訪問隸屬于進(jìn)程的資源.(4)系統(tǒng)開銷:在創(chuàng)建或撤消進(jìn)程時(shí),由于系統(tǒng)都要為之分配和回收資源,導(dǎo)致系統(tǒng)的開銷明顯大于創(chuàng)建或撤消線程時(shí)的開銷6.用宏定義寫出swap(x,y)(思科)解析:#defineswap(x,y)x=x+y;y=x-y;x=x-y7.什么是預(yù)編譯,何時(shí)需要預(yù)編譯:(思科)解析:就是指程序執(zhí)行前的一些預(yù)處理工作,主要指#表示的.何時(shí)需要預(yù)編譯?1)、總是使用不經(jīng)常改動(dòng)的大型代碼體。2)、程序由多個(gè)模塊組成,所有模塊都使用一組標(biāo)準(zhǔn)的包含文件和相同的編譯選項(xiàng)。在這種情況下,可以將所有包含文件預(yù)編譯為一個(gè)預(yù)編譯頭。8.下述三個(gè)有什么區(qū)別?char*constp;charconst*p,constchar*p;(慧通)解:constchar*p和charconst*p修飾的是p所指向的變量,不可以用*p=’a’等這樣的方式修改變量區(qū)的內(nèi)容.指針本身是可以修改的,比如說charx,y;const*p=&x,p=&y,修改指針本身是可以的,*p=‘b’就不行。Char*constp;中const修飾的是指針,表明指針在操作過程中不可以修改,而指針?biāo)赶虻膬?nèi)容是可以修改的,比如說charx,y;char*constp=&x;*p=‘b’是可以的,但p=&y;是不可以的,const修飾的是指針,不可以修改指針的指向,只可以修改指針?biāo)壍淖兞?.int(*s[10])(int)表示的是什么???(慧通)解析:這樣的表達(dá)式可以遵循這樣的規(guī)則:從右向左,由近及遠(yuǎn),括號(hào)優(yōu)先;比如:從a符號(hào)開始。其右邊是[10],說明a是個(gè)數(shù)組,其中存了十個(gè)元素。再看a的左邊是一個(gè)*。說明數(shù)組中存的是指針。現(xiàn)在在看(*a[10])的右邊是(int);說明所存的指針是指向有一個(gè)int形參的函數(shù)現(xiàn)在看(*a[10])的左邊是個(gè)int,說明指向的函數(shù)的返回值為int類型;10.進(jìn)程之間通信的途徑,進(jìn)程間通信方法(慧通)解析:無名管道,命名管道,消息隊(duì)列,信號(hào),共享內(nèi)存,套接字。等11.什么是“引用”?申明和使用“引用”要注意哪些問題?解析:引用就是某個(gè)目標(biāo)變量的“別名”(alias),對(duì)應(yīng)用的操作與對(duì)變量直接操作效果完全相同。申明一個(gè)引用的時(shí)候,切記要對(duì)其進(jìn)行初始化。引用聲明完畢后,相當(dāng)于目標(biāo)變量名有兩個(gè)名稱,即該目標(biāo)原名稱和引用名,不能再把該引用名作為其他變量名的別名。聲明一個(gè)引用,不是新定義了一個(gè)變量,它只表示該引用名是目標(biāo)變量名的一個(gè)別名,它本身不是一種數(shù)據(jù)類型,因此引用本身不占存儲(chǔ)單元,系統(tǒng)也不給引用分配存儲(chǔ)單元。不能建立數(shù)組的引用12.include和include“filename.h”的區(qū)別?解析:<>是從標(biāo)準(zhǔn)庫路徑搜索,“”是從用戶當(dāng)前工作目錄開始,找不到,在到標(biāo)準(zhǔn)庫開始13.Heap和Stack的區(qū)別?解析:Heap是堆,Stack是棧。棧的空間由操作系統(tǒng)自動(dòng)分配和回收,而堆上的空間由程序員申請(qǐng)和釋放。棧的空間大小較小,而堆的空間較大。棧的地址空間往低地址方向生長,而堆向高地址方向生長。棧的存取效率更高。程序在編譯期間對(duì)變量和函數(shù)的內(nèi)存分配都在棧上,且程序運(yùn)行過程中對(duì)函數(shù)調(diào)用中參數(shù)的內(nèi)存分配也是在棧上。14.sizeof和strlen之間的區(qū)別?解析:(1)sizeof操作符的結(jié)果類型是size_t,它在頭文件中的typedef為unsignedint類型,該類型保證能容納實(shí)現(xiàn)所建立的最大對(duì)象的字節(jié)大小。(2)sizeof是運(yùn)算符,strlen是函數(shù)(3)sizeof可以用類型做參數(shù),strlen只能用char*做參數(shù),且必須是以’\0’結(jié)尾的。(4)數(shù)組做sizeof的參數(shù)不退化,傳遞給strlen就退化為指針。(5)大部分編譯程序在編譯的時(shí)候就把sizeof計(jì)算過了是類型或是變量的.長度。(6)strlen的結(jié)果要在運(yùn)行的時(shí)候才能計(jì)算出來,用來計(jì)算字符串的長度,而不是類型占用內(nèi)存的大小。(7)sizeof后如果是類型必須加括號(hào),如果是變量名可以不加括號(hào)。(8)當(dāng)使用了一個(gè)結(jié)構(gòu)類型或變量時(shí),sizeof返回實(shí)際的大小。(9)數(shù)組作為參數(shù)傳遞給函數(shù)時(shí)傳的是指針而不是數(shù)組,傳遞的是數(shù)組的首地址。(10)計(jì)算結(jié)構(gòu)變量的大小就必須討論數(shù)組對(duì)齊問題。(11)sizeof操作符不能用于函數(shù)類型,不完全類型或位字段。15.#defineDOUBLE(x)x+x,i=5*DOUBLE(5);i是多少?解析:i為30。16.unsignedshorthash(unsignedshortkey){return(key>>)%256}解析請(qǐng)問hash(16),hash(256)的值分別是:A.1.16;B.8.32;C.4.16;D.1.3217.booldoubleintfloat.各種類型與0值的比較(概率較大)解析:請(qǐng)寫出BOOLflag與“零值”比較的if語句。if(flag)或者if(!flag)如下寫法均屬不良風(fēng)格,不得分。if(flag==TRUE)if(flag==1)if(flag==FALSE)if(flag==0)請(qǐng)寫出floatx與“零值”比較的if語句。(4分)標(biāo)準(zhǔn)答案示例:constfloatEPSINON=0.00001;if((x>=-EPSINON)&&(x<=EPSINON)不可將浮點(diǎn)變量用“==”或“!=”與數(shù)字比較,應(yīng)該設(shè)法轉(zhuǎn)化成“>=”或“<=”此類形式如下是錯(cuò)誤的寫法,不得分。if(x==0.0)if(x!=0.0)請(qǐng)寫出char*p與“零值”比較的if語句。(3分)標(biāo)準(zhǔn)答案:if(p==NULL)或者if(p!=NULL)如下寫法均屬不良風(fēng)格,不得分。if(p==0)if(p!=0)if(p)if(!)18.結(jié)構(gòu)與聯(lián)合有和區(qū)別?解析:1.結(jié)構(gòu)和聯(lián)合都是由多個(gè)不同的數(shù)據(jù)類型成員組成,但在任何同一時(shí)刻,聯(lián)合中只存放了一個(gè)被選中的成員(所有成員共用一塊地址空間),而結(jié)構(gòu)的所有成員都存在(不同成員的存放地址不同)。2.對(duì)于聯(lián)合的不同成員賦值,將會(huì)對(duì)其它成員重寫,原來成員的值就不存在了,而對(duì)于結(jié)構(gòu)的不同成員賦值是互不影響的19.簡述數(shù)組與指針的區(qū)別?解析:數(shù)組要么在靜態(tài)存儲(chǔ)區(qū)被創(chuàng)建(如全局?jǐn)?shù)組),要么在棧上被創(chuàng)建。指針可以隨時(shí)指向任意類型的內(nèi)存塊。(1)修改內(nèi)容上的差別chara[]=“hello”;a[0]=‘X’;char*p=“world”;//注意p指向常量字符串p[0]=‘X’;//編譯器不能發(fā)現(xiàn)該錯(cuò)誤,運(yùn)行時(shí)錯(cuò)誤(2)用運(yùn)算符sizeof可以計(jì)算出數(shù)組的容量(字節(jié)數(shù))。sizeof(p),p為指針得到的是一個(gè)指針變量的字節(jié)數(shù),而不是p所指的內(nèi)存容量。C++/C語言沒有辦法知道指針?biāo)傅膬?nèi)存容量,除非在申請(qǐng)內(nèi)存時(shí)記住它。注意當(dāng)數(shù)組作為函數(shù)的參數(shù)進(jìn)行傳遞時(shí),該數(shù)組自動(dòng)退化為同類型的指針。chara[]="helloworld";char*p=a;cout<<sizeof(a)<<endl;//12字節(jié)cout<<sizeof(p)<<endl;//4字節(jié)計(jì)算數(shù)組和指針的內(nèi)存容量voidFunc(chara[100]){cout<<sizeof(a)<<endl;//4字節(jié)不是100字節(jié)}20.如何判斷一段程序是由C編譯程序還是由C++編譯程序編譯的?解析:#ifdef__cpluspluscout<<"c++";#elsecout<<"c";#endif21.main主函數(shù)執(zhí)行完畢后,是否可能會(huì)再執(zhí)行一段代碼,給出說明?解析:可以,可以用_onexit注冊(cè)一個(gè)函數(shù),它會(huì)在main之后執(zhí)行intfn1(void),fn2(void),fn3(void),fn4(void);voidmain(void){Stringstr("zhanglin");_onexit(fn1);_onexit(fn2);_onexit(fn3);_onexit(fn4);printf("Thisisexecutedfirst.");}intfn1(){printf("next.");return0;}intfn2(){printf("executed");return0;}intfn3(){printf("is");return0;}intfn4(){printf("This");return0;}22.intid[sizeof(unsignedlong)];這個(gè)對(duì)嗎?為什么??解析:對(duì),這個(gè)sizeof是編譯時(shí)運(yùn)算符,編譯時(shí)就確定了可以看成和機(jī)器有關(guān)的常量。23.如何打印出當(dāng)前源文件的文件名以及源文件的當(dāng)前行號(hào)?解析:cout<<__FILE__;cout<<__LINE__;__FILE__和__LINE__是系統(tǒng)預(yù)定義宏,這種宏并不是在某個(gè)文件中定義的而是由編譯器定義的解析:不能,數(shù)組作為參數(shù)傳遞給函數(shù)時(shí),數(shù)組名被退化為指針,因此函數(shù)中的sizeof(str)實(shí)際是在求一個(gè)指針的sizeof,答案為4,因此不能計(jì)算出數(shù)組的長度。24.以下函數(shù)能求出數(shù)組的長度嗎?voidfun(charstr[]){intlen=sizeof(str)/sizeof(str[0]);}25.輸出的結(jié)果是多少,并分析過程?unsignedshortA=10;printf(“%u”,~A);charch=128;printf(“%d”,ch);答:~A=4294967285,首先將A轉(zhuǎn)化為int類型,即對(duì)應(yīng)的二進(jìn)制數(shù)值為:00000000000000000000000000001010,~A=11111111111111111111111111110101,其實(shí)這種情況最高位是1,認(rèn)為是負(fù)數(shù),但是在輸出中指定以無符號(hào)數(shù)輸出,于是結(jié)果為4294967285=4294967295(四字節(jié)表示的最大數(shù))-10.ch=128對(duì)應(yīng)的二進(jìn)制為:10000000,在輸出中以整數(shù)形式輸出,由于最高位是1,于是就是負(fù)數(shù),10000000是該負(fù)數(shù)的補(bǔ)碼,根據(jù)求補(bǔ)碼的反步驟計(jì)算,先-1,得到01111111,在取反得10000000=128,由于本身是負(fù)數(shù),即為-128.26.New與mallocfree的聯(lián)系與區(qū)別?解析:都是在堆(heap)上進(jìn)行動(dòng)態(tài)的內(nèi)存操作。用malloc函數(shù)需要指定內(nèi)存分配的字節(jié)數(shù)并且不能初始化對(duì)象,new會(huì)自動(dòng)調(diào)用對(duì)象的構(gòu)造函數(shù)。會(huì)調(diào)用對(duì)象的destructor,而free不會(huì)調(diào)用對(duì)象的destructor.27.用變量a給出下面的定義(特別重要)a)一個(gè)整型數(shù)(Aninteger)b)一個(gè)指向整型數(shù)的指針(Apointertoaninteger)c)一個(gè)指向指針的的指針,它指向的指針是指向一個(gè)整型數(shù)(Apointertoapointertoaninteger)d)一個(gè)有10個(gè)整型數(shù)的數(shù)組(Anarrayof10integers)e)一個(gè)有10個(gè)指針的數(shù)組,該指針是指向一個(gè)整型數(shù)的(Anarrayof10pointerstointege
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 汽車銷售部門年終總結(jié)
- 2024年銀行個(gè)人實(shí)習(xí)工作總結(jié)
- 建筑公司員工個(gè)人工作總結(jié)
- 2024金佛山導(dǎo)游詞(13篇)
- 大學(xué)生個(gè)人計(jì)劃書格式(32篇)
- 單位勞動(dòng)合同書電子版(3篇)
- 高中英語教研組2025
- 行政后勤人員試用期工作總結(jié)
- 天津某公司電子研發(fā)及孵化項(xiàng)目申請(qǐng)報(bào)告
- 可行性研究報(bào)告 方案
- 客流統(tǒng)計(jì)系統(tǒng)施工方案
- 船舶制造設(shè)施安全生產(chǎn)培訓(xùn)
- 全國駕駛員考試(科目一)考試題庫下載1500道題(中英文對(duì)照版本)
- TSG 07-2019電梯安裝修理維護(hù)質(zhì)量保證手冊(cè)程序文件制度文件表單一整套
- 設(shè)備損壞評(píng)估報(bào)告范文
- 標(biāo)準(zhǔn)和計(jì)量管理制度范文(2篇)
- 透析患者心理問題護(hù)理干預(yù)
- 孕前口腔護(hù)理保健
- 《大學(xué)生安全教育》課件 項(xiàng)目四 軍事安全
- 10KV電力配電工程施工方案
- 智能感知工程基礎(chǔ)知識(shí)單選題100道及答案解析
評(píng)論
0/150
提交評(píng)論