




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、嵌入式開發(fā)面試題 2.txt根網(wǎng)線''盡賺了多少人的青春有時(shí)候感動(dòng)的就是身邊微不足道的小事。破碎不是最殘酷的最殘酷的是踩著這些碎片卻假裝不疼痛固執(zhí)的尋找將來就算我遇見再怎么完美的人,都有一個(gè)缺點(diǎn),他不是你,_下輩子要做男生,娶一個(gè)像我這樣的女生。8086的堆棧采取向下生長的方式,在壓入時(shí)_(41_。(41 A. SP 先減,再壓入數(shù)據(jù) B. 先壓入數(shù)據(jù),SP 再減C. SP 先加,再壓入數(shù)據(jù)D. 先壓入數(shù)據(jù),SP 再加<解析>:考查8086堆棧的基礎(chǔ)知識(shí)。個(gè)人覺得,堆棧是嵌入式的基礎(chǔ)東西,自然就是考試重點(diǎn),以后或許會(huì)多考單片機(jī)ARM的結(jié)構(gòu)。8086處理器均采用滿遞減
2、堆棧。入棧時(shí),先減地址,后進(jìn)數(shù)據(jù);出棧時(shí),先出數(shù)據(jù),后減地址。PUSH SRL:先將棧頂指針SP向上移兩位,即SP-2,指向一個(gè)新的字存儲(chǔ)單元,再將操作數(shù)的內(nèi)容存入SP所指的字存儲(chǔ)單元。POP DST:將當(dāng)前棧頂指針SP所指向字單元內(nèi)容送向DST,然后將SP下移兩位,SP-2。參考答案:A。若對某一寄存器某幾位清零,可用一條指令_(42_處理。今天老大讓我針對一個(gè)面試者出些嵌入式方面的面試題,主要是想對他的技術(shù)深度進(jìn)一步了解。我就出了下面這些問題,每個(gè)問題背后都是考察一個(gè)嵌入式程序員應(yīng)該具備的相關(guān)技能。當(dāng)然這些只是我的個(gè)人理解,不一定正確。在此與大家分享,只是希望朋友們能夠得到一點(diǎn)點(diǎn)啟發(fā):如何
3、抓住每一個(gè)契機(jī)展現(xiàn)你的與眾不同?同樣的技術(shù)問題,很多人可能都能夠回答得對,但有些人只是知其然而不知所以然。其實(shí)面試官每一個(gè)問題背后通常都隱藏著一個(gè)考察點(diǎn)。如果我們能夠透過問題看到背后的實(shí)質(zhì),在回答出答案的時(shí)候還能夠借機(jī)發(fā)揮,我相信90和100分的差別就出來了。哪個(gè)面試官不喜歡招一個(gè)喜歡思考、能透過現(xiàn)象看本質(zhì)的員工呢下面我們來看看嵌入式C面試題背后到底藏何玄機(jī)。以下僅是個(gè)人的一些想法,歡迎大家討論,拍磚的輕點(diǎn)/1、 int a=2,b=11,c=a+b+/a+; 則c值為多少?【考點(diǎn)】編碼規(guī)范。表面上考察你對運(yùn)算符優(yōu)先級(jí)的掌握程度,但實(shí)際上優(yōu)先級(jí)這些玩意很難死記硬背得住?大家的疑惑不就是運(yùn)算符的
4、結(jié)合順序么?那么如何去避免呢?c=a+(b+/(a+不就行了么,其實(shí)問題背后考察的是你的編碼規(guī)范,如何寫清晰易懂的代碼,如何在一個(gè)團(tuán)隊(duì)中讓自己的代碼狠容易毫無偏差的讓新人看懂2、 Static用在全局變量定義和函數(shù)內(nèi)部局部變量定義有何區(qū)別?【考點(diǎn)】編碼規(guī)范及模塊化設(shè)計(jì)。Static變量的兩個(gè)屬性涉及存儲(chǔ)位置及可見域。在大型的程序設(shè)計(jì)中static全局變量可以有效的避免名字空間的重復(fù)及無意的變量引用,這樣可以有效的提高程序設(shè)計(jì)的安全性,同時(shí)也利用模塊化作業(yè)3、在程序設(shè)計(jì)中哪些地方需要使用define?如何用define來定義一年內(nèi)有多少小時(shí)的常量?【考點(diǎn)】可移植性。嵌入式程序設(shè)計(jì)的特點(diǎn)就是軟硬件
5、平臺(tái)可變性,有效利用define常量可以提高程序的可移植性,這樣改動(dòng)方便,不易出錯(cuò)4、 Define宏語句和inline函數(shù)有什么區(qū)別?【考點(diǎn)】時(shí)空效率及宏的副作用。嵌入式系統(tǒng)平臺(tái)通常存儲(chǔ)資源有限,但同時(shí)又對實(shí)時(shí)性有一定的要求,二者如何權(quán)衡需要考慮。Define宏語句相對于函數(shù)調(diào)用能提高運(yùn)行時(shí)間性能,但消耗了空間,并且不標(biāo)準(zhǔn)的宏語句定義在不標(biāo)準(zhǔn)的編碼中更容易出現(xiàn)副作用,因此inline函數(shù)則是define語句的完美替代品。小資金干大事正是嵌入式的終極目標(biāo)!5、哪些地方可以用到const?const變量和函數(shù)輸入?yún)?shù)用const修飾有哪些作用?【考點(diǎn)】程序設(shè)計(jì)可靠性。Const只讀變量可以有效克
6、服define常量的一些弊端,如無類型安全檢查。Const形參可以有效避免程序內(nèi)部更改無意的更改。人非圣賢孰能無誤,所以我們要將這些可能的失誤統(tǒng)統(tǒng)交給智能的編譯器,這樣就可以將錯(cuò)誤扼殺在搖籃中6、 Int,short,char在32位平臺(tái)下各占幾個(gè)字節(jié)?一個(gè)結(jié)構(gòu)體含有int、short、char變量各一個(gè),結(jié)構(gòu)體占據(jù)的總內(nèi)存空間多少?【考點(diǎn)】跨平臺(tái)移植。嵌入式并非x86,其硬件平臺(tái)具備很大的差異性,同為int在不同的架構(gòu)體系下可能占據(jù)的字節(jié)數(shù)是不一樣的。不同的平臺(tái)也有不同的編譯器,其在變量對齊方面可能有不同的特性。因此在結(jié)構(gòu)體定義時(shí)如何設(shè)計(jì)成員變量的順序以有效減少占據(jù)的內(nèi)存空間,以及如何填充特
7、定字段保證訪問對齊問題,都是嵌入式系統(tǒng)結(jié)構(gòu)體設(shè)計(jì)時(shí)應(yīng)該考慮的跨平臺(tái)可移植性問題7、如何將unsigned int明確定義為一個(gè)32位類型?define和typedef有何區(qū)別?【考點(diǎn)】跨平臺(tái)移植。define和typedef都可以實(shí)現(xiàn)變量類型重定義,但是typedef類型的指針變量可以有效去除變量定義的二義性。在嵌入式的工程項(xiàng)目中,通常為了保證數(shù)據(jù)類型的統(tǒng)一且便于跨平臺(tái)移植時(shí)修改數(shù)據(jù)類型方便,通常都會(huì)單獨(dú)定義一個(gè)數(shù)據(jù)類型的頭文件,把所有用到的數(shù)據(jù)類型typedef成所熟悉的形式8、有沒有用過volatile?有哪些典型的適用場合?【考點(diǎn)】編譯優(yōu)化的副作用。通常為了提高程序運(yùn)行的效率,編譯器會(huì)自
8、動(dòng)進(jìn)行一些優(yōu)化,如將變量放在寄存器中,以減少存儲(chǔ)器訪問次數(shù),在數(shù)據(jù)長期未變時(shí)不重新讀取內(nèi)存等等。但是優(yōu)化有時(shí)會(huì)帶來問題,如硬件寄存器、多任務(wù)共享變量、中斷和主程序共享變量,優(yōu)化有可能帶來數(shù)據(jù)訪問不一致性的問題,因此對于這些個(gè)別變量,我們需要用volatile聲明告訴編譯器取消優(yōu)化9、參數(shù)傳遞有哪些形式?寄存器和堆棧傳遞各有什么優(yōu)缺點(diǎn)?【考點(diǎn)】編譯優(yōu)化、調(diào)用性能、接口設(shè)計(jì)。每種體系結(jié)構(gòu)及對應(yīng)的編譯器對參數(shù)傳遞都有自己的規(guī)定。參數(shù)傳遞并非總是通過堆棧進(jìn)行的,參數(shù)入棧出棧是需要耗費(fèi)時(shí)間的,編譯器總是盡量優(yōu)化利用寄存器來傳遞參數(shù),因?yàn)榧拇嫫鞯脑L問效率要高,但當(dāng)參數(shù)過多時(shí),將放棄優(yōu)化從而用棧傳遞參數(shù)。因
9、此為了提高調(diào)用性能,應(yīng)盡量減少參數(shù)個(gè)數(shù),太多時(shí)可以將所有參數(shù)重新定義為一個(gè)結(jié)構(gòu)體,利用結(jié)構(gòu)體指針來傳遞參數(shù)。在函數(shù)接口設(shè)計(jì)時(shí)應(yīng)考慮硬件平臺(tái)和編譯器的特性,以靈活定義參數(shù)形式10、中斷服務(wù)程序設(shè)計(jì)應(yīng)注意的問題?中斷觸發(fā)方式的選擇?中斷處理太長怎么辦?中斷處理程序如何與主應(yīng)用程序交互?【考點(diǎn)】中斷服務(wù)程序設(shè)計(jì)。嵌入式程序最大的特點(diǎn)是經(jīng)常需要和硬件打交道,中斷是接收外界輸入的典型方式,通常都決定了系統(tǒng)運(yùn)行流程,因此如何高效不丟失的處理中斷是每個(gè)嵌入式程序員應(yīng)考慮的問題11、 TCP/IP和OSI七層模型是如何劃分的?各層的功能,這么設(shè)計(jì)有什么好處?【考點(diǎn)】層次化軟件設(shè)計(jì)保證可移植性。分層模型最大的好
10、處就是某一層變化了,只要其提供上層的接口未變,那么上層就無需做任何改動(dòng)。因此只需要更改本層的實(shí)現(xiàn)即可。嵌入式平臺(tái)因?yàn)檐浻布嘧冃?為了最大限度的利用先前的成果,軟件設(shè)計(jì)一定要遵循這種層次化模型,這樣才能保證其可移植性12、 TCP和UDP的區(qū)別?各種網(wǎng)絡(luò)互連設(shè)備都用在哪一層?如何建立鏈接?如何進(jìn)行擁塞控制?【考點(diǎn)】協(xié)議設(shè)計(jì)可靠性及緩沖區(qū)設(shè)計(jì)管理。TCP和UDP的最大區(qū)別在于可靠性,TCP通過三次握手協(xié)議及超時(shí)機(jī)制安全可靠的建立或者釋放連接。協(xié)議設(shè)計(jì)最大的問題就是如何保證效率合可靠性,TCP的設(shè)計(jì)為我們提供了一個(gè)參考。而滑動(dòng)窗口機(jī)制可以有效的進(jìn)行擁塞控制,但窗口大小的設(shè)計(jì)則關(guān)系到內(nèi)存利用率及緩沖
11、效率可靠性等問題。在嵌入式的驅(qū)動(dòng)程序設(shè)計(jì)中,經(jīng)常會(huì)開辟緩沖區(qū)來進(jìn)行流量控制及防止數(shù)據(jù)覆蓋,緩沖區(qū)的大小設(shè)計(jì)則需要更加具體的應(yīng)用情況設(shè)計(jì)才能保證可靠性合靈活性(42A. AND B. OR C. NOT D. XOR<解析>:考查匯編語言的基礎(chǔ)知識(shí),簡單到極點(diǎn)了,這個(gè)分?jǐn)?shù)拿不到,基本過不了。AND(與:有0為0。OR(或:有1為1。NOT(非:取反。XOR(異或:相同為0,不同為1。要對寄存器的某幾位清零,應(yīng)用AND。例如對11011010的中間四位清零:11011010 AND 11000011 得11000010。個(gè)人認(rèn)為:用XOR指令,一條指令是做不到的,實(shí)際中不可取。參考答案
12、:A。指令周期是指_(43_。(43 A. CPU 從主存取出一條指令的時(shí)間B. CPU 執(zhí)行一條指令的時(shí)間C. CPU 從主存取出一條指令加上執(zhí)行該條指令的時(shí)間D. 時(shí)鐘周期的時(shí)間<解析>:考嵌入式最最基本的概念了,記住就行,這個(gè)分?jǐn)?shù)必拿。指令周期:CPU從內(nèi)存取出一條指令并執(zhí)行這條指令的時(shí)間總和。包括取指令,分析指令,執(zhí)行指令整個(gè)過程。<補(bǔ)充>:時(shí)鐘周期、機(jī)器周期、指令周期的概念辨析。時(shí)鐘周期:時(shí)序中的最小單位,就是1/fosc。例如:晶振為12MHz,那么時(shí)鐘周期為1/12us。機(jī)器周期:完成某一規(guī)定操作所需的時(shí)間,通常由若干時(shí)鐘周期構(gòu)成。例如:單片機(jī)是12周期的
13、話,那么在12MHz晶振的情況下,其機(jī)器周期為1us。指令周期:完成一條指令的所有時(shí)間。例如RET是一個(gè)2周期指令,在上述的條件下,它的指令周期為2us。參考答案:C。在匯編過程中,不產(chǎn)生機(jī)器碼,只用來指示匯編程序如何匯編的指令是_(44_。(44A. 宏指令 B. 偽指令 C. 匯編指令 D. 機(jī)器指令<解析>:考查匯編語言的基礎(chǔ)知識(shí)。不想多說了,太簡單了,自己看看概念吧?;蛘哌@樣記住:偽指令就是假的指令,假得指令是給人看的,不是給機(jī)器看的,所以機(jī)器不能產(chǎn)生代碼。注意一下宏指令的用法,說不好下次就考了。參考答案:B。在8086微處理器中,若(SS = 2000H,(SP = 01
14、00H,(AX = 2107H,執(zhí)行指令PUSH AX 后存放數(shù)據(jù)21H 的物理地址是_(45_。(45A. 20102H B. 20101H C. 200FEH D. 200FFH<解析>:這道題目不容易,需要對X86匯編語言有深入的理解,拿不到分就算了。41題是會(huì)做對這道題目的基礎(chǔ)。由41題可知,8086的堆棧數(shù)據(jù)操作是,SP先減,再壓入數(shù)據(jù),以字為單位對堆棧操作。因此壓入數(shù)據(jù)時(shí)的起始SP應(yīng)為0100H-2=00FEH。而8086中數(shù)據(jù)采用小端模式存取,即一個(gè)字?jǐn)?shù)據(jù)中低字節(jié)存放低位地址。(X86越向上的地址越小8086邏輯地址到物理地址的形成機(jī)制為:物理地址=段地址*16+偏移
15、地址(或物理地址=段地址左移4位+偏移地址。壓棧后,內(nèi)容存儲(chǔ)的物理地址為2000*16+00FEH=200FE,21H是AX 中的高位,其存儲(chǔ)位置為200FFH。參考答案:D。在串行通信中,根據(jù)數(shù)據(jù)傳輸方向不同,可以分成三種方式,不包括_(46_方式。(46A. 單工 B. 雙工 C. 半單工 D. 半雙工<解析>:考查接口通信的基礎(chǔ)知識(shí)。沒有必要多說,是我們搞嵌入式必須知道的基本常識(shí)。什么是單工、雙工、半雙工得搞搞清楚。參考答案:C。寄存器間接尋址方式中,操作數(shù)處在_(47_。(47A. 通用寄存器 B. 主存單元 C. 程序計(jì)數(shù)器 D. 堆棧<解析>:考查尋址方式的
16、基礎(chǔ)概念,需要有一點(diǎn)的理解,但是其選項(xiàng)會(huì)讓很多人答對。簡單來說,寄存器間接尋址方式是說,指令的寄存器的內(nèi)容不是操作數(shù),而是操作數(shù)的偏移地址,操作數(shù)本身則在存儲(chǔ)器中。參考答案:B。 IEEE 1394具有_(48_位地址空間,IEEE 1394的通信協(xié)議具有三個(gè)協(xié)議層,下面不屬于這三個(gè)協(xié)議層的是_(49_。(48A. 8 B. 16 C. 32 D. 64(49A. 事務(wù)層 B. 表示層 C. 鏈路層 D. 物理層<解析>:考查接口技術(shù)中1394的基本知識(shí)。參考教程219-221頁。1394總線類似于PCI總線,任何設(shè)備可以在64位地址空間內(nèi)進(jìn)行讀寫操作。一條1394總線可以接入63
17、個(gè)設(shè)備,支持同步和異步兩種串行傳輸方式。1394的協(xié)議由3層組成:物理層、鏈路層、事務(wù)層。參考答案:D、B。在軟件測試中,白盒測試是基于設(shè)計(jì)的和基于_(50_測試。(50A. 需求的 B. 代碼的 C. 提煉的 D. 反常的或極端的<解析>:考查軟件測試的基本知識(shí)。參考教程405-410頁,在2007年考試中,下午考了一道這方面的題目,要注意。機(jī)器測試分為黑盒測試和白盒測試。黑盒測試也稱為功能測試。白盒測試也稱為結(jié)構(gòu)測試。白盒測試,將軟件看成透明的白盒,根據(jù)程序內(nèi)部結(jié)構(gòu)和邏輯來設(shè)計(jì)測試用例,對程序的路徑和過程進(jìn)行測試,檢查是否滿足設(shè)計(jì)的需要。通過白盒測試,測試人員可以很清楚已經(jīng)有多
18、少代碼被檢查過了,可以準(zhǔn)確地預(yù)測出系統(tǒng)中的程序設(shè)計(jì)錯(cuò)誤的數(shù)量規(guī)模。參考答案:B。下面的題目必須全部答對才給分:1、如何在C中初始化一個(gè)字符數(shù)組。2、如何在C中為一個(gè)數(shù)組分配空間。3、如何初始化一個(gè)指針數(shù)組。4、如何定義一個(gè)有10個(gè)元素的整數(shù)型指針數(shù)組。5、 s10的另外一種表達(dá)方式是什么。6、 GCC3.2.2版本中支持哪幾種編程語言。7、要使用CHAR_BIT需要包含哪個(gè)頭文件。8、對(-1.2345取整是多少?9、如何讓局部變量具有全局生命期。10、C中的常量字符串應(yīng)在何時(shí)定義?11、如何在兩個(gè).c文件中引用對方的變量。12、使用malloc之前需要做什么準(zhǔn)備工作。13、realloc函數(shù)
19、在使用上要注意什么問題。14、strtok函數(shù)在使用上要注意什么問題。15、gets函數(shù)在使用上要注意什么問題。16、C語言的詞法分析在長度規(guī)則方面采用的是什么策略?17、a+b所表示的是什么意思?有什么問題?18、如何定義Bool變量的TRUE和FALSE的值。19、C語言的const的含義是什么。在定義常量時(shí),為什么推薦使用const,而不是#define。20、C語言的volatile的含義是什么。使用時(shí)會(huì)對編譯器有什么暗示。這部分是ANSI C的一些問題,題目的前提是必須都答對,看似很變態(tài),但是細(xì)想一下,這些都是最基礎(chǔ)的,雖然我們在使用他們的時(shí)候會(huì)犯這樣那樣的錯(cuò)誤,但是最終目的是不犯錯(cuò)
20、誤,不是么,那么好,從最基礎(chǔ)的開始。1、如何在C中初始化一個(gè)字符數(shù)組。這個(gè)問題看似很簡單,但是我們要將最簡單的問題用最嚴(yán)謹(jǐn)?shù)膽B(tài)度來對待。關(guān)鍵的地方:初始化、字符型、數(shù)組。最簡單的方法是char array;。這個(gè)問題看似解決了,但是在初始化上好像還欠缺點(diǎn)什么,個(gè)人認(rèn)為:char array5='1','2','3','4','5'或者char array5="12345"或者char array210="China","Beijing"也許更符合“初始化”
21、的意思。2、如何在C中為一個(gè)數(shù)組分配空間。最簡單的方法是:char array5;意思是分配給數(shù)組array一個(gè)5個(gè)字節(jié)的空間。但是我們要知道在C中數(shù)組其實(shí)就是一個(gè)名字,其實(shí)質(zhì)含義就是指針,比如char array;是到底分配的多少空間?所以我們要將其分成為兩種不同的形式給出答案:一種是棧的形式:char array5;一種是堆的形式:char *array; array=(char *malloc(5;/C+: array=new char5; 堆和棧的含義其實(shí)我也沒弄太透徹,改天明白了再發(fā)一篇。我們要明白的是,第一種形式空間分配的大小可能會(huì)受操作系統(tǒng)的限制,比如windows會(huì)限制在2M;
22、第二種形式成空間分配很靈活,想分配多少分配多少,只要RAM夠大。3、如何初始化一個(gè)指針數(shù)組。首先明確一個(gè)概念,就是指向數(shù)組的指針,和存放指針的數(shù)組。指向數(shù)組的指針:char (*array5;含義是一個(gè)指向存放5個(gè)字符的數(shù)組的指針。存放指針的數(shù)組:char *array5;含義是一個(gè)數(shù)組中存放了5個(gè)指向字符型數(shù)據(jù)的指針。按照題意,我理解為初始化一個(gè)存放指針的數(shù)組,char *array2="China","Beijing"其含義是初始化了一個(gè)有兩個(gè)指向字符型數(shù)據(jù)的指針的數(shù)組,這兩個(gè)指針分別指向字符串"China"和"Beij
23、ing"。4、如何定義一個(gè)有10個(gè)元素的整數(shù)型指針數(shù)組。既然只是定義而不是初始化,那就很簡單且沒有爭議了:int *array10;。5、 s10的另外一種表達(dá)方式是什么。前面說過了,數(shù)組和指針其實(shí)是數(shù)據(jù)存在形態(tài)的兩種表現(xiàn)形式,如果說對于數(shù)組s,我們知道*s=s0,那么s10的另一種表達(dá)方式就是:*(s+10。6、 GCC3.2.2版本中支持哪幾種編程語言。這個(gè)問題實(shí)在變態(tài),就像問你#error的作用是什么一樣。不可否認(rèn),gcc是linux下一個(gè)亮點(diǎn),是一個(gè)備受無數(shù)程序員推崇的編譯器,其優(yōu)點(diǎn)省略 1000字,有興趣可以自己查,我翻了翻書,書上曰:支持C,C+,Java,Obj-C,A
24、da,Fortran,Pascal,Modula-3等語言,這個(gè)“等”比較要命,不過我認(rèn)為已經(jīng)很全了,如果認(rèn)為還是不全,干脆把ASM也加上算了,不過那已經(jīng)不算是編譯了。7、要使用CHAR_BIT需要包含哪個(gè)頭文件。如果結(jié)合上面的問題,答題的人估計(jì)會(huì)認(rèn)為自己撞鬼了,這個(gè)問題實(shí)在是搜索了一下,應(yīng)該是limits.h。8、 對(-1.2345取整是多少? 其實(shí)不同的取整函數(shù)可能有不同的結(jié)果,不過這個(gè)數(shù)沒有太大的爭議,答案是-1。 9、 如何讓局部變量具有全局生命期。 具體的生命期的概念我覺得我還要好好深入的學(xué)習(xí)一下,但是這個(gè)題目還算比較簡單,即用 static 修飾就可以了,但是只是生命期延長,范圍
25、并沒有擴(kuò)大,除非把這個(gè)變量定義在函數(shù) 體外的靜態(tài)區(qū),不過那樣就變成全局變量了,仿佛不符合題目要求。 10、C 中的常量字符串應(yīng)在何時(shí)定義? 這個(gè)問題說實(shí)話不是很理解題干的意思,據(jù)我理解,有兩種情況,一種是預(yù)處理階段,用 #define 定義;還有就是使用 const 修飾詞,不過 const 修飾的是一個(gè)變量,其含義是“只 讀” ,稱之為常量并不準(zhǔn)確,但是確實(shí)可以用操作變量的方法當(dāng)常量用。所以還是第一種比較 靠譜。 11、如何在兩個(gè).c 文件中引用對方的變量。 這個(gè)問題也問的挺含糊的,怎么說呢,最簡單最直接的方法是為變量添加 extern 修飾詞,當(dāng) 然,這個(gè)變量必須是全局變量。還有一種就是利
26、用函數(shù)調(diào)用來進(jìn)行變量的間接引用,比如這 個(gè) C 文件中的一個(gè)函數(shù)引用另外一個(gè) C 中的函數(shù),將變量通過實(shí)參的形式傳遞過去。不過題 目既然說是引用,那么還是用第一個(gè)答案好了。 12、使用 malloc 之前需要做什么準(zhǔn)備工作。 其實(shí)準(zhǔn)備工作很多啊,比如你需要一臺(tái)計(jì)算機(jī)之類的。玩笑話,我們首先要知道 malloc 的用 途,簡單的說就是動(dòng)態(tài)的分配一段空間,返回這段空間的頭指針。實(shí)際的準(zhǔn)備工作可以這么 分:需要這段空間的指針是否存在,若不存在,則定義一個(gè)指針用來被賦值,還要清楚要返 回一個(gè)什么類型的指針,分配的空間是否合理;如果指針已經(jīng)存在,那么在重新將新的空間 頭地址賦值給這個(gè)指針之前,要先判斷指
27、針是否為 NULL,如果不是要 free 一下,否則原來 的空間就會(huì)被浪費(fèi),或者出錯(cuò),free 之后就按照前一種情形考慮就可以了。 13、realloc 函數(shù)在使用上要注意什么問題。 這個(gè)函數(shù)我也才知道的,汗一個(gè)。據(jù)我的初步理解,這個(gè)函數(shù)的作用是重新分配空間大小, 返回的頭指針不變,只是改變空間大小。既然是改變,就有變大、變小和為什么改變的問題。 變大,要注意不能大到內(nèi)存溢出;變小,那變小的那部分空間會(huì)被征用,原有數(shù)據(jù)不再存在; 為什么改變,如果是想重新挪作他用,還是先 free 了吧。 14、strtok 函數(shù)在使用上要注意什么問題。 這個(gè)問題我不知道能不能回答全面,因?yàn)閷?shí)在是用的很少。這個(gè)
28、函數(shù)的作用是分割字符串, 但 是 要 分 割 的 字 符 串 不 能 是 常 量 , 這 是 要 注 意 的 。 比 如 先 定 義 一 個(gè) 字 符 串 : char array="part1,part2",strtok 的原形是 char *strtok(char *string, char *delim;, 我們將","作為分隔符,先用 pt=strtok(array,",",得到的結(jié)果 print 出來就是"part1", 那后面的呢,要寫成 pt=strtok(NULL,",",注意,要
29、用 NULL,如果被分割的字符串會(huì)被分 成 N 段,那從第二次開始就一直要用 NULL??偨Y(jié)起來,需要注意的是:被分割的字符串和分 隔符都要使用變量;除第一次使用指向字符串的指針外,之后的都要使用 NULL;注意使用這 個(gè)函數(shù)的時(shí)候千萬別把指針跟丟了,不然就全亂了。 15、gets 函數(shù)在使用上要注意什么問題。 這是一個(gè)鍵盤輸入函數(shù),將輸入字符串的頭地址返回。說到要注意的問題,我還是先查了一 下網(wǎng)上的一些情況,需要注意的就是 gets 以輸入回車結(jié)束,這個(gè)地球人都知道,但是很多人 不知道的是,當(dāng)你輸入完一個(gè)字符串后,這個(gè)字符串可能依然存在于這個(gè)標(biāo)準(zhǔn)輸入流之中, 當(dāng)再次使用 gets 的時(shí)候,也
30、許會(huì)把上次輸入的東西讀出來,所以應(yīng)該在使用之后用 fflush(stdin;處理一下,將輸入流清空。最后也還是要注意溢出的問題。關(guān)于這個(gè)答案我 比較含糊,不知道有沒有高人高見? 16、C 語言的詞法分析在長度規(guī)則方面采用的是什么策略? 我無語聞所未聞啊還是搜索了一下,有一篇文章,地址是: /jp2005/20/kcwz/wlkc/wlkc/03/3_5_2.htm, 是關(guān)于詞法分析器的。 其 中提到了兩點(diǎn)策略: (1 按最長匹配原則確定被選的詞型; (2 如果一個(gè)字符串能為若干個(gè) 詞型匹配,則排列在最前面的詞型被選中。不知道是不是題干的要求,還是其他什么。我
31、乃 一介草民,望達(dá)人指點(diǎn)迷津! 17、a+b 所表示的是什么意思?有什么問題? 這個(gè)東西(稱之為東西一點(diǎn)都不過分)其實(shí)并沒有語法錯(cuò)誤,按照 C 對運(yùn)算符等級(jí)的劃分, +的優(yōu)先級(jí)大于+,那么這句話會(huì)被編譯器看做:(a+(+ b,這回明白了吧。有什么問題, 語法上沒有問題,有的是道德上的問題!作為一個(gè)優(yōu)秀的程序員,我們要力求語句的合法性 和可讀性,如果寫這句的人是在一個(gè) team 里,那么他基本會(huì)被打的半死最后討論一下 結(jié)果:假設(shè) a 之前的值是 3,b 是 4,那么運(yùn)行完這個(gè)變態(tài)語句后,a 的值是 4,b 是 5,語句 的結(jié)果是 8。 18、如何定義 Bool 變量的 TRUE 和 FALSE 的值。 不知道這個(gè)題有什么陷阱, 寫到現(xiàn)在神經(jīng)已經(jīng)大了, 一般來說先要把 TURE 和 FALSE 給定義了, 使用#define 就可以: #define TURE 1 #define FALSE 0 如果有一個(gè)變量需要定義成 bool 型的,舉個(gè)例子:bool a=TURE;就可以了。 19、C 語言的 const 的含義是什么。在定義常量時(shí),為什么推薦使用 const,而不是#define
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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ǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年春滬科版七年級(jí)數(shù)學(xué)下冊 第9章 分式 小結(jié)與復(fù)習(xí)
- 2025年度深圳市物流行業(yè)勞動(dòng)合同范本
- 2025年度旅游意外保險(xiǎn)合作協(xié)議書
- 二零二五年度甲乙丙方寫字樓轉(zhuǎn)租管理協(xié)議
- 二零二五年度父子間債權(quán)轉(zhuǎn)讓及債務(wù)轉(zhuǎn)移安排協(xié)議
- 2025年度智能信用卡委托代理服務(wù)合作協(xié)議
- 二零二五年度跨境電商股權(quán)零元轉(zhuǎn)讓協(xié)議
- 二零二五年度離婚后財(cái)產(chǎn)分割與雙方未來子女入學(xué)協(xié)議
- 電子煙基礎(chǔ)知識(shí)培訓(xùn)課件
- 2025陜西彬長礦業(yè)集團(tuán)有限公司招聘(150人)筆試參考題庫附帶答案詳解
- 2024年河北省公務(wù)員錄用考試《行測》試題及答案解析
- 科學(xué)四年級(jí)下冊第一單元第4課《車來了》課件
- 膝關(guān)節(jié)穿刺術(shù)課件
- 海信入職在線測評(píng)真題
- 陶瓷制品產(chǎn)業(yè)鏈優(yōu)化與協(xié)同創(chuàng)新
- 骨骼肌損傷的再生修復(fù)
- 大象版(2017秋)六年級(jí)下冊 科學(xué) 2.4可再生與不可再生資源(教學(xué)設(shè)計(jì))
- 《珍愛生命拒絕毒品》主題班會(huì)課件
- 蘇教版二年級(jí)數(shù)學(xué)下冊單元測試題及答案全套1
- 全國職業(yè)院校技能大賽高職組(建筑信息模型建模與應(yīng)用賽項(xiàng))備賽試題庫(含答案)
- 07SG111-1 建筑結(jié)構(gòu)加固施工圖設(shè)計(jì)表示方法
評(píng)論
0/150
提交評(píng)論