freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[信息與通信]嵌入式開(kāi)發(fā)—c語(yǔ)言面試題-資料下載頁(yè)

2025-01-18 04:48本頁(yè)面
  

【正文】 strcpy(str,hello)。printf(str)。return 0。}沒(méi)有為str分配內(nèi)存空間,將會(huì)發(fā)生異常問(wèn)題出在將一個(gè)字符串復(fù)制進(jìn)一個(gè)字符變量指針?biāo)傅刂贰km然可以正確輸出結(jié)果,但因?yàn)樵浇邕M(jìn)行內(nèi)在讀寫(xiě)而導(dǎo)致程序崩潰。 char* s=AAA。printf(%s,s)。s[0]=39。B39。printf(%s,s)。有什么錯(cuò)?AAA是字符串常量。s是指針,指向這個(gè)字符串常量,所以聲明s的時(shí)候就有問(wèn)題。cosnt char* s=AAA。然后又因?yàn)槭浅A浚詫?duì)是s[0]的賦值操作是不合法的。 寫(xiě)一個(gè)“標(biāo)準(zhǔn)”宏,這個(gè)宏輸入兩個(gè)參數(shù)并返回較小的一個(gè)。.define Min(X, Y) ((X)(Y)?(Y):(X))//結(jié)尾沒(méi)有。嵌入式系統(tǒng)中經(jīng)常要用到無(wú)限循環(huán),你怎么用C編寫(xiě)死循環(huán)。while(1){}或者for(。)關(guān)鍵字static的作用是什么?定義靜態(tài)變量關(guān)鍵字const有什么含意?表示常量不可以修改的變量。關(guān)鍵字volatile有什么含意?并舉出三個(gè)不同的例子?提示編譯器對(duì)象的值可能在編譯器未監(jiān)測(cè)到的情況下改變。 int (*s[10])(int) 表示的是什么啊int (*s[10])(int) 函數(shù)指針數(shù)組,每個(gè)指針指向一個(gè)int func(int param)的函數(shù)。 :int a=248。 b=4。int const c=21。const int *d=amp。a。int *const e=amp。b。int const *f const =amp。a。請(qǐng)問(wèn)下列表達(dá)式哪些會(huì)被編譯器禁止?為什么?*c=32。d=amp。b。*d=43。e=34。e=amp。a。f=0x321f。*c 這是個(gè)什么東東,禁止*d 說(shuō)了是const, 禁止e = amp。a 說(shuō)了是const 禁止const *f const =amp。a。 禁止,不使用第三個(gè)變量。即a=3,b=5,交換之后a=5,b=3。有兩種解法, 一種用算術(shù)算法, 一種用^(異或)a = a + b。b = a b。a = a b。 ora = a^b。// 只能對(duì)int,char..b = a^b。a = a^b。ora ^= b ^= a。++中的struct有什么不同?c和c++中struct的主要區(qū)別是c中的struct不可以含有成員函數(shù),而c++中的struct可以。c++中struct和class的主要區(qū)別在于默認(rèn)的存取權(quán)限不同,struct默認(rèn)為public,而class默認(rèn)為private4.#i nclude #i nclude void getmemory(char *p) { p=(char *) malloc(100)。 strcpy(p,hello world)。 } int main( ) { char *str=NULL。 getmemory(str)。 printf(%s/n,str)。 free(str)。 return 0。 }程序崩潰,getmemory中的malloc 不能返回動(dòng)態(tài)內(nèi)存, free()對(duì)str操作很危險(xiǎn) szstr[10]。 strcpy(szstr,0123456789)。 產(chǎn)生什么結(jié)果?為什么? 長(zhǎng)度不一樣,會(huì)造成非法的OS,并比較其優(yōu)缺點(diǎn)。 原子操作 信號(hào)量機(jī)制 自旋鎖 管程,會(huì)合,分布式系統(tǒng) 共享存儲(chǔ)系統(tǒng)消息傳遞系統(tǒng)管道:以文件系統(tǒng)為基礎(chǔ)資源競(jìng)爭(zhēng)及進(jìn)程推進(jìn)順序非法互斥、請(qǐng)求保持、不可剝奪、環(huán)路鴕鳥(niǎo)策略、預(yù)防策略、避免策略、檢測(cè)與解除死鎖15. 操作系統(tǒng)中進(jìn)程調(diào)度策略有哪幾種?FCFS(先來(lái)先服務(wù)),優(yōu)先級(jí),時(shí)間片輪轉(zhuǎn),多級(jí)反饋?類(lèi)的靜態(tài)成員每個(gè)類(lèi)只有一個(gè),非靜態(tài)成員每個(gè)對(duì)象一個(gè)?使用時(shí)應(yīng)注意什么?virtual void f()=0。是接口,子類(lèi)必須要實(shí)現(xiàn)數(shù)組:數(shù)據(jù)順序存儲(chǔ),固定大小連表:數(shù)據(jù)可以隨機(jī)存儲(chǔ),大小可動(dòng)態(tài)改變 ?tcp/udp是屬于哪一層?tcp/udp有何優(yōu)缺點(diǎn)?應(yīng)用層表示層會(huì)話(huà)層運(yùn)輸層網(wǎng)絡(luò)層物理鏈路層物理層tcp /udp屬于運(yùn)輸層TCP 服務(wù)提供了數(shù)據(jù)流傳輸、可靠性、有效流控制、全雙工操作和多路復(fù)用技術(shù)等。與 TCP 不同, UDP 并不提供對(duì) IP 協(xié)議的可靠機(jī)制、流控制以及錯(cuò)誤恢復(fù)功能等。由于 UDP 比較簡(jiǎn)單, UDP 頭包含很少的字節(jié),比 TCP 負(fù)載消耗少。tcp: 提供穩(wěn)定的傳輸服務(wù),有流量控制,缺點(diǎn)是包頭大,冗余性不好udp: 不提供穩(wěn)定的服務(wù),包頭小,開(kāi)銷(xiāo)小 1:(void *)ptr 和 (*(void**))ptr的結(jié)果是否相同?其中ptr為同一個(gè)指針.(void *)ptr 和 (*(void**))ptr值是相同的2:int main() { int x=3。 printf(%d,x)。 return 1。 }問(wèn)函數(shù)既然不會(huì)被其它函數(shù)調(diào)用,為什么要返回1?mian中,c標(biāo)準(zhǔn)認(rèn)為0表示成功,非0表示錯(cuò)誤。具體的值是某中具體出錯(cuò)信息 1,要對(duì)絕對(duì)地址0x100000賦值,我們可以用(unsigned int*)0x100000 = 1234。那么要是想讓程序跳轉(zhuǎn)到絕對(duì)地址是0x100000去執(zhí)行,應(yīng)該怎么做?*((void (*)( ))0x100000 ) ( )。首先要將0x100000強(qiáng)制轉(zhuǎn)換成函數(shù)指針,即:(void (*)())0x100000然后再調(diào)用它:*((void (*)())0x100000)()。用typedef可以看得更直觀些:typedef void(*)() voidFuncPtr。*((voidFuncPtr)0x100000)()。2,已知一個(gè)數(shù)組table,用一個(gè)宏定義,求出數(shù)據(jù)的元素個(gè)數(shù)define NTBLdefine NTBL (sizeof(table)/sizeof(table[0])) 面試題: 線(xiàn)程與進(jìn)程的區(qū)別和聯(lián)系? 線(xiàn)程是否具有相同的堆棧? dll是否有獨(dú)立的堆棧?進(jìn)程是死的,只是一些資源的集合,真正的程序執(zhí)行都是線(xiàn)程來(lái)完成的,程序啟動(dòng)的時(shí)候操作系統(tǒng)就幫你創(chuàng)建了一個(gè)主線(xiàn)程。 每個(gè)線(xiàn)程有自己的堆棧。DLL中有沒(méi)有獨(dú)立的堆棧,這個(gè)問(wèn)題不好回答,或者說(shuō)這個(gè)問(wèn)題本身是否有問(wèn)題。因?yàn)镈LL中的代碼是被某些線(xiàn)程所執(zhí)行,只有線(xiàn)程擁有堆棧,如果DLL中的代碼是EXE中的線(xiàn)程所調(diào)用,那么這個(gè)時(shí)候是不是說(shuō)這個(gè)DLL沒(méi)有自己獨(dú)立的堆棧?如果DLL中的代碼是由DLL自己創(chuàng)建的線(xiàn)程所執(zhí)行,那么是不是說(shuō)DLL有獨(dú)立的堆棧? 以上講的是堆棧,如果對(duì)于堆來(lái)說(shuō),每個(gè)DLL有自己的堆,所以如果是從DLL中動(dòng)態(tài)分配的內(nèi)存,最好是從DLL中刪除,如果你從DLL中分配內(nèi)存,然后在EXE中,或者另外一個(gè)DLL中刪除,很有可能導(dǎo)致程序崩潰 unsigned short A = 10。printf(~A = %u\n, ~A)。 char c=128。 printf(c=%d\n,c)。 輸出多少?并分析過(guò)程第一題,~A =0xfffffff5,int值 為-11,但輸出的是uint。所以輸出4294967285第二題,c=0x10,輸出的是int,最高位為1,是負(fù)數(shù),所以它的值就是0x00的補(bǔ)碼就是128,所以輸出-128。這兩道題都是在考察二進(jìn)制向int或uint轉(zhuǎn)換時(shí)的最高位處理。 分析下面的程序:void GetMemory(char **p,int num){ *p=(char *)malloc(num)。 } int main(){ char *str=NULL。 GetMemory(amp。str,100)。 strcpy(str,hello)。 free(str)。 if(str!=NULL) { strcpy(str,world)。 } printf(\n str is %s,str)。 getchar()。} 問(wèn)輸出結(jié)果是什么?希望大家能說(shuō)說(shuō)原因,先謝謝了輸出str is world。free 只是釋放的str指向的內(nèi)存空間,它本身的值還是存在的.所以free之后,有一個(gè)好的習(xí)慣就是將str=NULL.此時(shí)str指向空間的內(nèi)存已被回收,如果輸出語(yǔ)句之前還存在分配空間的操作的話(huà),這段存儲(chǔ)空間是可能被重新分配給其他變量的,盡管這段程序確實(shí)是存在大大的問(wèn)題(上面各位已經(jīng)說(shuō)得很清楚了),但是通常會(huì)打印出world來(lái)。這是因?yàn)?,進(jìn)程中的內(nèi)存管理一般不是由操作系統(tǒng)完成的,而是由庫(kù)函數(shù)自己完成的。當(dāng)你malloc一塊內(nèi)存的時(shí)候,管理庫(kù)向操作系統(tǒng)申請(qǐng)一塊空間(可能會(huì)比你申請(qǐng)的大一些),然后在這塊空間中記錄一些管理信息(一般是在你申請(qǐng)的內(nèi)存前面一點(diǎn)),并將可用內(nèi)存的地址返回。但是釋放內(nèi)存的時(shí)候,管理庫(kù)通常都不會(huì)將內(nèi)存還給操作系統(tǒng),因此你是可以繼續(xù)訪(fǎng)問(wèn)這塊地址的,只不過(guò)。樓上都說(shuō)過(guò)了,最好別這么干。 char a[10],strlen(a)為什么等于15?運(yùn)行的結(jié)果 #i nclude #i nclude void main(){ char aa[10]。printf(%d,strlen(aa))。} sizeof()和初不初始化,沒(méi)有關(guān)系;strlen()和初始化有關(guān)。 char (*str)[20]。/*str是一個(gè)數(shù)組指針,即指向數(shù)組的指針.*/char *str[20]。/*str是一個(gè)指針數(shù)組,其元素為指針型數(shù)據(jù).*/ long a=0x801010。a+5=?0x801010用二進(jìn)制表示為:“1000 0000 0001 0000 0001 0000”,十進(jìn)制的值為8392720,再加上5就是8392725羅1)給定結(jié)構(gòu)struct A { char t:4。 char k:4。 unsigned short i:8。 unsigned long m。}。問(wèn)sizeof(A) = ?給定結(jié)構(gòu)struct A { char t:4。 4位 char k:4。 4位 unsigned short i:8。 8位 unsigned long m。 // 偏移2字節(jié)保證4字節(jié)對(duì)齊}。 // 共8字節(jié)2)下面的函數(shù)實(shí)現(xiàn)在一個(gè)數(shù)上加一個(gè)數(shù),有什么錯(cuò)誤?請(qǐng)改正。int add_n ( int n ){ static int i = 100。 i += n。 return i。}當(dāng)你第二次調(diào)用時(shí)得不到正確的結(jié)果,難道你寫(xiě)個(gè)函數(shù)就是為了調(diào)用一次?問(wèn)題就出在 static上? // 幫忙分析一下#i nclude#i nclude #i nclude #i nclude #i nclude #i nclude typedef struct AA{ int b1:5。 int b2:2。}AA。void main(){ AA aa。 char cc[100]。 strcpy(cc,0123456789abcdefghijklmnopqrstuvwxyz)。 memcpy(amp。aa,cc,sizeof(AA))。 cout endl。 cout endl。}答案是 16和1首先sizeof(AA)的大小為4,b1和b2分別占5bit和2bit.經(jīng)過(guò)strcpy和memcpy后,aa的4個(gè)字節(jié)所存放的值是:0,1,2,3的ASC碼,即00110000,00110001,00110010,00110011所以,最后一步:顯示的是這4個(gè)字節(jié)的前5位,和之后的2位分別為:10000,和01因?yàn)閕nt是有正負(fù)之分  所以:答案是16和1 求函數(shù)返回值,輸入x=9999。 int func ( x ){ int countx = 0。 while ( x ) { countx ++。 x = xamp。(x1)。 } return countx。 } 結(jié)果呢?知道了這是統(tǒng)計(jì)9999的二進(jìn)制數(shù)值中有多少個(gè)1的函數(shù),且有9999=91024+512+256+15 91024中含有1的個(gè)數(shù)為2;512中含有1的個(gè)數(shù)為1;256中含有1的個(gè)數(shù)為1;15中含有1的個(gè)數(shù)為4;故共有1的個(gè)數(shù)為8,結(jié)果為8。1000 1 = 0111,正好是原數(shù)取反。這就是原理。用這種方法來(lái)求1的個(gè)數(shù)是很效率很高的。不必去一個(gè)一個(gè)地移位。循環(huán)次數(shù)最少。 int a,b,c 請(qǐng)寫(xiě)函數(shù)實(shí)現(xiàn)C=a+b ,不可以改變數(shù)據(jù)類(lèi)型,如將c改為long int,關(guān)鍵是如何處理溢出問(wèn)題bool add (int a, int b,int *c){*c=a+b。return (a0 amp。amp。
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1