C語言試題answer_第1頁
C語言試題answer_第2頁
C語言試題answer_第3頁
C語言試題answer_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、C語百試題1.用預(yù)處理指令#define聲明一個常數(shù),用以表明1年中有多少秒(忽略閏年問題)參考答案:#defineSECONDS_PER_YEAR(60*60*24*365)UL2,寫一個"標準"宏MIN,這個宏輸入兩個參數(shù)并返回較小的一個。參考答案:#defineMIN(A,B)(A)<=(B)?(A):(B)3 .頭文件中的ifndef/define/endif干什么用?參考答案:防止該頭文件被重復(fù)引用。4 .#include<filename.h>和#include“filename.h有什么區(qū)別?參考答案:對于#include<filena

2、me.h>,編譯器從標準庫路徑開始搜索filename.h。對于#include“filename.h,編譯器從用戶的工作路徑開始搜索filename.ho5,關(guān)鍵字static的作用是什么?參考答案:(1)在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。(2)在模塊內(nèi)(但在函數(shù)體外),一個被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個本地的全局變量。(3)在模塊內(nèi),一個被聲明為靜態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。6 .關(guān)鍵字const有什么含義?參考答案:(1)可以定義co

3、nst常量(2) const可以修飾函數(shù)的參數(shù)、返回值,甚至函數(shù)的定義體。被const修飾的東西都受到強制保護,可以預(yù)防意外的變動,能提高程序的健壯性。7 .解釋堆和棧的區(qū)別。參考答案:(1) 棧區(qū)(stack):由編譯器自動分配釋放,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結(jié)構(gòu)中的棧。(2) 堆區(qū)(heap):一般由程序員分配釋放,若程序員不釋放,程序結(jié)束時可能由OS回收。注意它與數(shù)據(jù)結(jié)構(gòu)中的堆是兩回事,分配方式倒是類似于鏈表.(主要有:malloc/free,new/delete)8 .什么是可重入函數(shù)?C語言中寫可重入函數(shù),應(yīng)注意的事項?參考答案:可重入函數(shù)是指能夠被多個線

4、程同時”調(diào)用的函數(shù),并且能保證函數(shù)結(jié)果的正確性的函數(shù)。在編寫可重入函數(shù)時通常要注意如下的一些問題:盡量不要使用全局變量,靜態(tài)變量,如果使用了應(yīng)該注意對變量訪問的互斥。通常可以根據(jù)具體的情況采用:信號量機制,關(guān)調(diào)度機制,關(guān)中斷機制等方式來保證函數(shù)的可重入性。不要調(diào)用不可重入的函數(shù),調(diào)用了不可重入的函數(shù)會使該函數(shù)也變?yōu)椴豢芍厝氲暮瘮?shù)。注意對系統(tǒng)中的臨界資源,互斥資源的訪問方式,防止使函數(shù)成為不可重入的函數(shù)。一般驅(qū)動程序都是不可重入的函數(shù),因此在編寫驅(qū)動程序時一定要注意重入的問題。9 .內(nèi)存思考voidGetMemory(char*p)p=(char*)malloc(100);voidTest(vo

5、id)char*str=NULL;GetMemory(str);strcpy(str,"helloworld");printf(str);請問運行Test函數(shù)會有什么樣的結(jié)果?參考答案:程序崩潰。因為GetMemory并不能傳遞動態(tài)內(nèi)存,Test函數(shù)中的str一直都是NULL。strcpy(str,"helloworld");將使程序崩潰。char*GetMemory(void)charp="helloworld"returnp;voidTest(void)char*str=NULL;str=GetMemory();printf(st

6、r);請問運行Test函數(shù)會有什么樣的結(jié)果?參考答案:可能是亂碼。因為GetMemory返回的是指向“棧內(nèi)存”的指針,該指針的地址不是NULL,但其原來的內(nèi)容已經(jīng)被清除,新內(nèi)容不可知。VoidGetMemory2(char*p,intnum)*p=(char*)malloc(num);voidTest(void)char*str=NULL;GetMemory(&str,100);strcpy(str,"hello");printf(str);請問運行Test函數(shù)會有什么樣的結(jié)果?參考答案:(1)能夠輸出hello(2)內(nèi)存泄漏voidTest(void)char*s

7、tr=(char*)malloc(100);strcpy(str,hello");free(str);if(str!=NULL)strcpy(str,world");printf(str);請問運行Test函數(shù)會有什么樣的結(jié)果?參考答案:篡改動態(tài)內(nèi)存區(qū)的內(nèi)容,后果難以預(yù)料,非常危險。因為free(str);之后,str成為野指針,if(str!=NULL)語句不起作用。10. 用變量a給出下面的定義a) 一個整型數(shù)b) 一個指向整型數(shù)的指針c)一個指向指針的指針,它指向的指針是指向一個整型數(shù)d) 一個有10個整型數(shù)的數(shù)組e) 一個有10個指針的數(shù)組,該指針是指向一個整型數(shù)的

8、f) 一個指向有10個整型數(shù)數(shù)組的指針g) 一個指向函數(shù)的指針,該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)h) 一個有10個指針的數(shù)組,該指針指向一個函數(shù),該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)參考答案:i) inta;j) int*a;k) int*a;l) inta10;m) int*a10;n) int(*a)10;o) int(*a)(int);p) int(*a10)(int);11. 編程題:給定一個整型變量a,寫兩段代碼,第一個設(shè)置a的bit3,第二個清除a的bit3。在以上兩個操作中,要保持其它位不變。參考答案:#defineBIT3(0x1<<3)staticinta;voidset_bit3(void)a|

溫馨提示

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

評論

0/150

提交評論