C C語言程序設計筆試面試題_第1頁
C C語言程序設計筆試面試題_第2頁
C C語言程序設計筆試面試題_第3頁
C C語言程序設計筆試面試題_第4頁
C C語言程序設計筆試面試題_第5頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、4.技巧題試題2:寫一個函數(shù)返回1+2+3+n的值(假定結果不會超過長整型變量的范圍) 解答:int Sum( int n )return ( (Ion g)1 + n) * n / 2;答:5. 請簡述以下兩個for循環(huán)的優(yōu)缺點(5分)for (i=0; iif (con diti on)DoSomethi ng();elseDoOtherthi ng();優(yōu)點:程序簡潔if (con diti on)for (i=0; iDoSomethi ng();elsefor (i=0; iDoOtherthi ng();優(yōu)點:循環(huán)的效率高缺點:程序不簡潔缺點:多執(zhí)行了 N-1次邏輯判斷,并且打 斷

2、了循環(huán)“流水線”作業(yè),使得編譯器不 能對循環(huán)進行優(yōu)化處理,降低了效率。5分,共20 分)void GetMemory(char *p)char *GetMemory(void)p = (char *)malloc(100);char p = hello world;return p;void Test(void)void Test(void)char *str = NULL;GetMemory(str);char *str = NULL;strc py (str, hello world);str = GetMemory();prin tf(str);prin tf(str);請問運行Test

3、函數(shù)會有什么樣的結果請問運行Test函數(shù)會有什么樣的結果答:程序崩潰。答:可能是亂碼。因為因為GetMemory返回的是指向棧內存”的指 針,該指針的地址不是 NULL,但其原現(xiàn)的內Test函數(shù)中的str 一直都是 NULL。容已經(jīng)被清除,新內容不可知。strcpy(str,hello world);將使程序崩潰。GetMemory并不能傳遞動態(tài)內存,void GetMemory2(char *p, int num)rvoid Test(void)*p = (char *)malloc( nu m);char *str = (char *) malloc(100);strc py(str,vo

4、id Test(void)free(str);if(str != NULL)char *str = NULL;GetMemory(&str, 100);strc py(str,strcpy(str, hello);prin tf(str);prin tf(str);請問運行Test函數(shù)會有什么樣的結果請問運行Test函數(shù)會有什么樣的結果答:答:篡改動態(tài)內存區(qū)的內容,后果難以預料,(非常危險。(因為 free(str);之后,str成為野指針,if(str != NULL)語句不起作用。1 )能夠輸出hello2 )內存泄漏“hello ”);“world ” );函數(shù)的原型是 char *st

5、rcpy(char *strDest, const 是目的字符串,strSrc是源字符串。1)不調用C+/Cstrc pystrDest!=NULL)&( strSrc !=NULL);紹vector 。strcpy 函數(shù)(10 分)strcpy char *strSrc); 其中 strDest 的字符串庫函數(shù),請編寫函數(shù) 一下STL,詳細說明STL如何實現(xiàn)An swer:STL (標準模版庫,Sta ndard Tem pl ate Library.它由容器算法迭代器組成。STL有以下的一些優(yōu)點:可以方便容易地實現(xiàn)搜索數(shù)據(jù)或對數(shù)據(jù)排序等一系列的算法;調試程序時更加安全和方便;STL是跨平臺

6、的)。即使是人們用 STL在UNIX平臺下寫的代碼你也可以很容易地理解(因為,動態(tài)的增加數(shù)組空間。vector實質上就是一個動態(tài)數(shù)組,會根據(jù)數(shù)據(jù)的增加2.如果用VC開發(fā)程序,常見這么幾個錯誤,C2001,c2005,c2011,這些錯誤的原因是什么。An swer:在學習VC+勺過程中,遇到的 LNK2001錯誤的錯誤消息主要為: unr esolved exter nal symbol“ symbol (不確定的外部 符號”)。變量或標簽,將產(chǎn)生此錯誤如果連接程序不能在所有的庫和目標文件內找到所引用的函數(shù)、消息。一般來說,發(fā)生錯誤的原因有兩個: 一是所引用的函數(shù)、 變量不存在、 其次可能使用

7、了不同版本的連接庫。編程中經(jīng)常能遇到 LNK2005錯誤一一重復定義錯誤,其實 難解決的錯誤.拼寫不正確或者使用錯誤;LNK2005錯誤并不是一個很3. 繼承和委派有什么分別,在決定使用繼承或者委派的時候需要考慮什么。 在00D,00呻,組合優(yōu)于繼承.當然多態(tài)的基礎是繼承,沒有繼承多態(tài)無從談起。當對象的類型不影響類中函數(shù)的行為時,就要使用模板來生成這樣一組類。 當對象的類型影響類中函數(shù)的行為時,就要使用繼承來得到這樣一組類4. 指針和引用有什么分別;如果傳引用比傳指針安全,為什么如果我使用常量指針難道不行嗎(1)引用在創(chuàng)建的同時必須初始化,即引用到一個有效的對象;而指針在定義的時候不必初始化,

8、可以在定義后面的任何地方重新賦值 不存在N ULL引用,引用必須與合法的存儲單元關聯(lián);而指針則可以是 NULL.(3) 引用一旦被初始化為指向一個對象, 它就不能被改變?yōu)榱硪粋€對象的引用; 而指針在任何時 候都可以改變?yōu)橹赶蛄硪粋€對象給引用賦值并不是改變它和原始對象的綁定關系(4) 引用的創(chuàng)建和銷毀并不會調用類的拷貝構造函數(shù)只不(5) 語言層面,引用的用法和對象一樣;在二進制層面,引用一般都是通過指針來實現(xiàn)的, 過編譯器幫我們完成了轉換 .不存在空引用,并且引用一旦被初始化為指向一個對象,它就不能被改變?yōu)榱硪粋€對象的引用, 顯得很安全。const 指針仍然存在空指針,并且有可能產(chǎn)生野指針 .總的來說:引用既具有指針的效率,又具有變量使用的方便性和直觀性5. 參數(shù)傳遞有幾種方式;實現(xiàn)多態(tài)參數(shù)傳遞采用什么方式,如果沒有使用某種方式原因是什么; 傳值,傳指針或者引用6. 結合一個項目說明你怎樣應用設計模式的理念。 設計模式更多考慮是擴展和重用,而這兩方面很多情況下,往往會被忽略。 不過,我不建議濫用設計模式,以為它有可能使得簡單問題復雜化7. 介紹一下你對設計模式的理解。(這個過程中有很多很細節(jié)的問題隨機問的) 設計模式概念是由建筑設計師 Christopher Alexander 提出 : 每一個模式描述了一個在我們周圍 不斷重復發(fā)生的問題 ,以及該問題的解

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論