2023年C筆試經典知識點_第1頁
2023年C筆試經典知識點_第2頁
2023年C筆試經典知識點_第3頁
2023年C筆試經典知識點_第4頁
2023年C筆試經典知識點_第5頁
已閱讀5頁,還剩52頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、sprintf函數操作的對象不限于字符串:雖然目的對象是字符串,但是源對象可以是字符串、也可以是任意基本類型的數據。這個函數重要用來實現(字符串或基本數據類型)向字符串的轉換功能。假如源對象是字符串,并且指定%s格式符,也可實現字符串拷貝功能。2、請編寫一個C函數,該函數給出一個字節(jié)中被置1的位的個數,并請給出該題的至少一個不同解法。val&=0x01;//與1相與}}3、請編寫一個C函數,該函數將給定的一個字符串轉換成整數。}4、請編寫一個C函數,該函數將給定的一個整數轉換成字符串。{intvalo=0;intval1=0;}}for(j=0;j<=i;j++))//倒置}}5、請編寫一個C函數,該函數將一個字符串逆序。voidAntitoneValuecharj++;}})7、請編寫一個C函數,該函數在一個字符串中找到也許的最長的子字符串,該}j++;}}}j++;}}}8、用<<,>>,I,&實現一個WORD(2個字節(jié))}2倆個字節(jié)是16位前八位為高位后八位為低位然后結合9、編寫一個函數,函數接受一個字符串,是由十六進制數組成的一組字符串,函數的功能是把接到的這組字符串轉換成十進制數字.并將十進制數字返回.}編譯器從用戶工作途徑開始搜索filename.h11、頭文獻的作用是什么?用戶只需要按照頭文獻中的接口聲明來調用庫功能,而不必關心接口怎么實現的。編譯器會從庫中提取相應的代碼。頭文獻能加強類型安全檢查。假如某個接口被實現或被使用時,其方式與頭文獻中的聲明不一致,編譯器就會指犯錯誤,這一簡樸的規(guī)則能大大減輕程序員調試、改錯的承擔。12、C++函數中值的傳遞方式有哪幾種?C++函數的三種傳遞方式為:值傳遞、指針傳遞和引用傳遞。13、內存的分派方式的分派方式有幾種?答:一、從靜態(tài)存儲區(qū)域分派。內存在程序編譯的時候就已經分派好,這塊內存在程序的整個運營期間都存在。例如全局變量。二、在棧上創(chuàng)建。在執(zhí)行函數時,函數內局部變量的存儲單元都可以在棧上創(chuàng)建,函數執(zhí)行結束時這些存儲單元自動被釋放。棧內存分派運算內置于解決器的指令集中,效率很高,但是分派的內存容量有限。三、從堆上分派,亦稱動態(tài)內存分派。程序在運營的時候用malloc或new申請任意多少的內存,程序員自己負責在何時用free或delete釋放內存。動態(tài)內存的生存期由我們決定,使用非常靈活,但問題也最多。14、實現雙向鏈表刪除一個節(jié)點P,在節(jié)點P后插入一個節(jié)點,寫出這兩個函數;//插入操作}15、請講一講析構函數和虛函數的用法和作用?析構函數是特殊的類成員函數,它沒有返回類型,沒有參數,不能隨意調用,也沒有重載,只有在類對象的生命期結束的時候,由系統自動調用。有適放內存空間的做用。虛函數是C++多態(tài)的一種表現,使用虛函數,我們可以靈活的進行動態(tài)綁定,當然是以一定的開銷為代價。16、全局變量和局部變量有什么區(qū)別?實怎么實現的?操作系統和編譯器是怎么知道的?生命周期不同:全局變量隨主程序創(chuàng)建和創(chuàng)建,隨主程序銷毀而銷毀局部變量在局部函數內部,甚至局部循環(huán)體等內部存在,退出就不存在;內存中分派在全局數據區(qū)使用方式不同:通過聲明后全局變量程序的各個部分都可以用到局部變量只能在局部使用;分派在棧區(qū)操作系統和編譯器通過內存分派的位置來知道的,全局變量分派在全局數據段并且在程序開始運營的時候被加載。局部變量則分派在堆棧里面。overload是重載,重載是一種參數多態(tài)機制,即代碼通過參數的類型或個數不同而實現的多態(tài)機制。是一種靜態(tài)的綁定機制(在編譯時已經知道具體執(zhí)行的是哪個代碼段)。override是覆蓋。覆蓋是一種動態(tài)綁定的多態(tài)機制。即在父類和子類中同名元素(如成員函數)有不同的實現代碼。執(zhí)行的是哪個代碼是根據運營時實際情況而定的。1、方法名必須相同2、參數列表必須不相同3、返回值類型可以不相同注意:override存在于繼繼承的關系類中。1、方法名相同2、參數列表相同3、返回值類型相同注意:存在于同一類中,但是只有虛方法和抽象方法才干被覆寫.18、解釋堆和棧的區(qū)別。在傳統的C中堆和棧實際是一塊物理內存,堆重要用來動態(tài)分派內存,從堆棧內存的低端向上分派;而棧重要用來傳遞函數參數、返回值和局部參數內存分派,是從堆棧內存的高端向memoryleak,棧是靜態(tài)分派,比如函數調用是需要分派堆棧,但堆棧能自動釋放.19、論述含參數的宏與函數的優(yōu)缺陷。宏是編譯期的,函數是運營期的;宏不是實體,而函數是一個可尋址的實體;宏只是編譯期替換,在程序里每碰到S(a,b),就用a*b代替,a和b兩個實體并沒有由宏實際產生,而函數S會在棧中定義兩個對象a和b。宏沒有生存期、作用域之類的概念,而函數就有。20、如何用最快的方法判斷鏈表是否有環(huán)?用兩個指針來遍歷這個單向鏈表,第一個指針p1,每次走一步;第二個指針p2,每次走兩步;當p2指針追上p1的時候,就表白鏈表當中有環(huán)路了。怎么判斷鏈表中是否有環(huán)?{if(pHead==NULL||pHead->next==NULL)//無節(jié)點或只有一個節(jié)點并且無自環(huán){pTemp1=pTemp1->next;//增量1pTemp=pTemp-nextnext//增量2}功能:把字符串轉換成長整型數}1)使用兩個指針進行遍歷,快指針每次步進2,慢指針每次步進1;(這個算法的思想和經典問題"鑒定鏈表中是否存在環(huán)"的思想是}}(3)擁有資源:進程是擁有資源的獨立單位,線程不擁有系統資源,但可(4)系統開銷:在創(chuàng)建或撤消進程時,由于系統都要為之分派和回收資源,導致系統的開銷39、存儲過程是什么?有什么用?有什么優(yōu)點?在數據庫。中用戶通過指定存儲過程的名字并給出參數(假如該存儲過程帶有參數)來執(zhí)行protected控制的是一個函數對一個類的成員(涉及成員變量及成員方法)的訪問權限。只能訪問靜態(tài)成員(變量或函數)。42、解釋一下多播(組播)和廣播的含義?廣播:主機之間“一對所有”的通訊模式,網絡對其中每一臺主機發(fā)出的信號都進行無條件復制并轉發(fā),所有主機都可以接受到所有信息(不管你是否需要).虛函數重要用于實現多態(tài)用,基類的某個函數前加個Virtual用來告訴編譯系統,碰到這個解決過程時,要等到執(zhí)行時再擬定到底調用哪個類的解決過程;每一個虛函數都會有一個入口地址,虛函數表保存所有虛函數的入口地址假如沒有多態(tài)和虛擬繼承,在C++中,struct和class的存取效率完全相同!簡樸的說就是,存取class的datamember和非virtualfunction效率和struct完全相同!不管該datamember是定義在基類還是派生類的。假如不是為了和C兼容,C++中就不會有struct關鍵字。CObject的析構函數設為virtual型,則所有CObject類的派生類的析構函數都將自動變?yōu)関irtual型,這保證了在任何情況下,不會出現由于析構函數未被調用而導致的內存泄露voidfun1(inta)const;const的作用是指在該函數內部不會改變此類的成員變量(除非該成員變量定義時加上violate關鍵字),否則修改了該成員變量就會報錯.44、C++中為什么用模板類。答:(1)可用來創(chuàng)建動態(tài)增長和減小的數據結構(2)它是類型無關的,因此具有很高的可復用性。(3)它在編譯時而不是運營時檢查數據類型,保證了類型安全(4)它是平臺無關的,可移植性(5)可用于基本數據類型45、Linux有內核級線程么。答:線程通常被定義為一個進程中代碼的不同執(zhí)行路線。從實現方式上劃分,線程有兩種類型:"用戶級線程"和"內核級線程"。用戶線程指不需要內核支持而在用戶程序中實現的線以被定制或修改以適應特殊應用的規(guī)定,但是當一個線程因I/0而處在載入DLL時所需的信息及DLL函數定位。函數載入DLL。DLL載入后,模塊可以通過調用GetProcAddress獲取DLL函數的出口地址,然后就可以通過返回的函數指針調用DLL函數了。如此即可避免導入庫文獻了50、用預解決指令#define聲明一個常數,用以表白1年中有多少秒(忽略閏年問題)這個簡樸的問題很少有人能回答完全。在C語言中,關鍵字static有三個明顯的作用:1).在函數體,一個被聲明為靜態(tài)的變量在這一函數被調用過程中維持其值不變。2).在模塊內(但在函數體外),一個被聲明為靜態(tài)的變量可以被模塊內所用函數訪問,但不能被模塊外其它函數訪問。它是一個本地的全局變量。3).在模塊內,一個被聲明為靜態(tài)的函數只可被這一模塊內的其它函數調用。那就是,這個函數被限制在聲明它的模塊的本地范圍內使用。大多數應試者能對的回答第一部分,一部分能對的回答第二部分,同是很少的人能懂得第三部分。這是一個應試者的嚴重的缺陷,由于他顯然不懂得本地化數據和代碼范圍的好處和重constint*a;//一個指向常整型數的指針,整型數是不可修改的,但指針可以int*consta;//一個指向整型數的常指針,指針指向的整型數是可以修改的,指針不可修改intconst*aconst;//一個指向常整型數的常指針,整型數不可修改,指針也是不可修改的53、給定一個數組,這個數組中既有正數又有負數,找出這個數組中的子數組,此子數組的和最大!final-修飾符(關鍵字)假如一個類被聲明為final,意味著它不能再派生出新的子類,不能定初值,而在以后的引用中只能讀取,不可修改。被聲明為final的方法也同樣只能使用,finally-再異常解決時提供finally塊來執(zhí)行任何清除操作。假如拋出一個異常,那么相匹配的catch子句就會執(zhí)行,然后控制就會進入finally塊(假如有的話)。之前做必要的清理工作。這個方法是由垃圾收集器在擬定這個對象沒有被引用時對這個對象調用的。它是在Object類中定義的,因此所有的類都繼承了它。子類覆蓋finalize()方法以整理系統資源或者執(zhí)行其他清理工作。finalize()方法是在垃圾收集器刪除對象之前對這個對象調用的。55、什么叫做多態(tài)性?在C++中是如何實現多態(tài)的?解:多態(tài)是指同樣的消息被不同類型的對象接受時導致完全不同的行為,是對類的特定成員函數的再抽象。C++支持的多態(tài)有多種類型,重載(涉及函數重載和運算符重載)和虛函數是其中重要的方式。56、什么叫做抽象類?抽象類有何作用?抽象類的派生類是否一定要給出純虛函數的實現?解:帶有純虛函數的類是抽象類。抽象類的重要作用是通過它為一個類族建立一個公共的接口,使它們可以更有效地發(fā)揮多態(tài)特性。抽象類聲明了一組派生類共同操作接口的通用語義,而接口的完整實現,即純虛函數的函數體,要由派生類自己給出。但抽象類的派生類并非一定要給出純虛函數的實現,假如派生類沒有給出純虛函數的實現,這個派生類仍然是一個抽象類。57、一個鏈表的結點結構(1)已知鏈表的頭結點head,寫一個函數把這個鏈表逆序(Intel)}}}|}|}(2)已知兩個鏈表head1和head2各自有序,請把它們合并成一個鏈表仍然有序,這次規(guī)定58、引用與指針有什么區(qū)別?1)引用必須被初始化,指針不必。2)引用初始化以后不能被改變,指針可以改變所指的對象。2)不存在指向空值的引用,但是存在指向空值的指針。59、數組a[N],存放了1至N-1個數,其中某個數反復一次。寫一個函數,找出被反復的數答案:方法1:假如數就是1-N-1,那么求出a[N]的和,然后減去1-N-1就行了。}址中60、什么是預編譯,何時需要預編譯:1、總是使用不經常改動的大型代碼體。2、程序由多個模塊組成,所有模塊都使用一組標準的包含文獻和相同的編譯選項。在這種情況下,可以將所有包含文獻預編譯為一個預編譯頭。61、單連表的建立,把'a'-'z'26個字母插入到連表中,并且倒敘,還要打印!方法1:方法2:nodetempnodemallocsizeofn62、設編號為1,2,…n的n個人圍坐一圈,約定編號為k(1<=k<=n)的人從1開始報數,數到m的那個人出列,它的下一位又從1開始報數,數到m的那個人又出列,依次類推,直到所有人出列為止,由此產生一個出隊編號的序列。j=0;}1}(})}}163、VC中,編譯工具條內的Debug與Release選項是什么含義?Debug通常稱為調試版本,它包含調試信息,并且不作任何優(yōu)化,便于程序員調試程序。Release稱為發(fā)布版本,它往往是進行了各種優(yōu)化,使得程序在代碼大小和運營速度上都是最優(yōu)的,以便用戶很好地使用。Debug帶有大量的調試代碼,運營時需要相應的運營庫,發(fā)布模式程序緊湊不具有調試代碼和信息,直接可以運營(假如不需要運營庫)64、編寫mymemcpy函數,實現與庫函數memcpy類似的功能,不能使用任何庫函數;65、編寫mystrcpy函數,實現與庫函數strcpy類似的功能,不能使用任何庫函數;可以把assert當作一個在任何系統狀態(tài)下都可以安全使用的無害測試手段。while(str[count]!="\}68、實模式與保護模式。為什么要設計這兩種模式?好處在什么地方?分別寫出各自尋址的答:1.實模式,又叫實地址模式,CPU完全按照8086的實際尋址方法訪問從00000h--FFFFFh(1MB大小)的地址范圍的內存,在這種模式下,CPU只能做單任務運營;尋址公式為:物理地址=左移4位的段地址+偏移地址,即:物理地址是由16位的段地址和16位的段內偏移地址組成的。2.保護模式,又叫內存保護模式,尋址采用32位段和偏移量,最大尋址空間4GB,在這種模式下,系統運營于多任務,設計這種模式的因素和好處是:保護模式

溫馨提示

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

評論

0/150

提交評論