




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、精選優(yōu)質(zhì)文檔-傾情為你奉上1. 用預處理指令#define 聲明一個常數(shù),用以表明1年中有多少秒(忽略閏年問題)#define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL 2. 寫一個“標準”宏MIN,這個宏輸入兩個參數(shù)并返回較小的一個。#define MIN(A,B) (A) = (B) (A) : (B) 4. 嵌入式系統(tǒng)中經(jīng)常要用到無限循環(huán),你怎么樣用C編寫死循環(huán)呢?這個問題用幾個解決方案。我首選的方案是: while(1) 一些程序員更喜歡如下方案: for(;) 第三個方案是用 goto Loop: . goto Loop;5. 用變量a給出下面的
2、定義 a) 一個整型數(shù)(An integer) b) 一個指向整型數(shù)的指針(A pointer to an integer) c) 一個指向指針的的指針,它指向的指針是指向一個整型數(shù)(A pointer to a pointer to an integer) d) 一個有10個整型數(shù)的數(shù)組(An array of 10 integers) e) 一個有10個指針的數(shù)組,該指針是指向一個整型數(shù)的(An array of 10 pointers to integers) f) 一個指向有10個整型數(shù)數(shù)組的指針(A pointer to an array of 10 integers) g) 一個指
3、向函數(shù)的指針,該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)(A pointer to a function that takes an integer as an argument and returns an integer) h) 一個有10個指針的數(shù)組,該指針指向一個函數(shù),該函數(shù)有一個整型參數(shù)并返回一個整型數(shù)( An array of ten pointers to functions that take an integer argument and return an integer )答案是: a) int a; / An integer b) int *a; / A pointer to
4、 an integer c) int *a; / A pointer to a pointer to an integer d) int a10; / An array of 10 integers e) int *a10; / An array of 10 pointers to integers f) int (*a)10; / A pointer to an array of 10 integers g) int (*a)(int); / A pointer to a function a that takes an integer argument and returns an int
5、eger h) int (*a10)(int); / An array of 10 pointers to functions that take an integer argument and return an integer 6. 關鍵字static的作用是什么?這個簡單的問題很少有人能回答完全。在C語言中,關鍵字static有三個明顯的作用: 1). 在函數(shù)體,一個被聲明為靜態(tài)的變量在這一函數(shù)被調(diào)用過程中維持其值不變。 2). 在模塊內(nèi)(但在函數(shù)體外),一個被聲明為靜態(tài)的變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問。它是一個本地的全局變量。 3). 在模塊內(nèi),一個被聲明為靜
6、態(tài)的函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用。那就是,這個函數(shù)被限制在聲明它的模塊的本地范圍內(nèi)使用。 7關鍵字const是什么含意? const int a; int const a; const int *a; int * const a; int const * a const;前兩個的作用是一樣,a是一個常整型數(shù)。第三個意味著a是一個指向常整型數(shù)的指針(也就是,整型數(shù)是不可修改的,但指針可以)。第四個意思a是一個指向整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是可以修改的,但指針是不可修改的)。最后一個意味著a是一個指向常整型數(shù)的常指針(也就是說,指針指向的整型數(shù)是不可修改的,同時指針也是不可修
7、改的)。如果應試者能正確回答這些問題,那么他就給我留下了一個好印象。8. 關鍵字volatile有什么含意 并給出三個不同的例子。一個定義為volatile的變量是說這變量可能會被意想不到地改變,這樣,編譯器就不會去假設這個變量的值了。精確地說就是,優(yōu)化器在用到這個變量時必須每次都小心地重新讀取這個變量的值,而不是使用保存在寄存器里的備份。下面是volatile變量的幾個例子: 1). 并行設備的硬件寄存器(如:狀態(tài)寄存器) 2). 一個中斷服務子程序中會訪問到的非自動變量(Non-automatic variables) 3). 多線程應用中被幾個任務共享的變量 1). 一個參數(shù)既可以是co
8、nst還可以是volatile嗎?解釋為什么。 2). 一個指針可以是volatile 嗎?解釋為什么。 3). 下面的函數(shù)有什么錯誤: int square(volatile int *ptr) return *ptr * *ptr; Ptr內(nèi)容可能被修改,無法保證兩次取得同一個值,應該先取出值放入一個變量中,然后通過這個變量來計算9. 嵌入式系統(tǒng)總是要用戶對變量或寄存器進行位操作。給定一個整型變量a,寫兩段代碼,第一個設置a的bit 3,第二個清除a 的bit 3。在以上兩個操作中,要保持其它位不變。#define BIT3 (0x1 6) puts( 6) : puts(6 13. 評價
9、下面的代碼片斷:unsigned int zero = 0; unsigned int compzero = 0xFFFF; /*1s complement of zero */14. 盡管不像非嵌入式計算機那么常見,嵌入式系統(tǒng)還是有從堆(heap)中動態(tài)分配內(nèi)存的過程的。那么嵌入式系統(tǒng)中,動態(tài)分配內(nèi)存可能發(fā)生的問題是什么?主要有三種類型:內(nèi)存泄露、內(nèi)存碎片和內(nèi)存崩潰 內(nèi)存崩潰是內(nèi)存使用最嚴重的結果,主要原因有數(shù)組訪問越界、寫已經(jīng)釋放的內(nèi)存、指針計算錯誤、訪問堆棧地址越界等等。碎片收集的問題,變量的持行時間等等下面的代碼片段的輸出是什么,為什么?char *ptr; if (ptr = (ch
10、ar *)malloc(0) = NULL) puts(Got a null pointer); else puts(Got a valid pointer); 該代碼的輸出是“Got a valid pointer”。15. Typedef 在C語言中頻繁用以聲明一個已經(jīng)存在的數(shù)據(jù)類型的同義字。也可以用預處理器做類似的事。例如,思考一下下面的例子: #define dPS struct s * typedef struct s * tPS; 答案是:typedef更好。思考下面的例子: dPS p1,p2; tPS p3,p4;第一個擴展為 struct s * p1, p2;上面的代碼定義
11、p1為一個指向結構的指,p2為一個實際的結構,這也許不是你想要的。第二個例子正確地定義了p3 和p4 兩個指針。16. C語言同意一些令人震驚的結構,下面的結構是合法的嗎,如果是它做些什么? int a = 5, b = 7, c; c = a+b;上面的代碼被處理成: c = a+ + b; 因此, 這段代碼持行后a = 6, b = 7, c = 12。 17.找錯題試題1:void test1()char string10;char* str1 = ;strcpy( string, str1 ); 試題2:void test2()char string10, str110;int i;f
12、or(i=0; i10; i+)str1i = a;strcpy( string, str1 ); 試題3:void test3(char* str1)char string10;if( strlen( str1 ) = 10 )strcpy( string, str1 ); 解答:試題1字符串str1需要11個字節(jié)才能存放下(包括末尾的0),而string只有10個字節(jié)的空間,strcpy會導致數(shù)組越界;對試題2,如果面試者指出字符數(shù)組str1不能在數(shù)組內(nèi)結束可以給3分;如果面試者指出strcpy(string, str1)調(diào)用使得從str1內(nèi)存起復制到string內(nèi)存起所復制的字節(jié)數(shù)具有不
13、確定性可以給7分,在此基礎上指出庫函數(shù)strcpy工作方式的給10分;對試題3,if(strlen(str1) = 10)應改為if(strlen(str1) = - epsinon) & (x =”或“=”形式。如果寫成if (x = 0.0),則判為錯,得0分。23:以下為windows nt下的32位c+程序,請計算sizeof的值void func ( char str100 )sizeof( str ) = ?void *p = malloc( 100 );sizeof ( p ) = ? 解答:sizeof( str ) = 4sizeof ( p ) = 4 char str10
14、;cout sizeof(str) endl; 24:寫一個“標準”宏min,這個宏輸入兩個參數(shù)并返回較小的一個。另外,當你寫下面的代碼時會發(fā)生什么事?least = min(*p+, b); 解答:#define min(a,b) (a) = (b) ? (a) : (b) min(*p+, b)會產(chǎn)生宏的副作用25為什么標準頭文件都有類似以下的結構? #ifndef _incvxworksh#define _incvxworksh #ifdef _cplusplusextern c #endif /*.*/ #ifdef _cplusplus#endif #endif /* _incvxw
15、orksh */ 解答:頭文件中的編譯宏#ifndef_incvxworksh#define_incvxworksh#endif 的作用是防止被重復引用。為了實現(xiàn)c和c+的混合編程,c+提供了c連接交換指定符號extern c來解決名字匹配問題,函數(shù)聲明前加上extern c后,則編譯器就會按照c語言的方式將該函數(shù)編譯為_foo,這樣c語言中就可以調(diào)用c+的函數(shù)了。26 編寫一個函數(shù),作用是把一個char組成的字符串循環(huán)右移n個。比如原來是“abcdefghi”如果n=2,移位后應該是“hiabcdefgh” 函數(shù)頭是這樣的:/pstr是指向以0結尾的字符串的指針/steps是要求移動的nvo
16、id loopmove ( char * pstr, int steps )/請?zhí)畛? 解答:正確解答1:void loopmove ( char *pstr, int steps )int n = strlen( pstr ) - steps;char tmpmax_len; strcpy ( tmp, pstr + n ); strcpy ( tmp + steps, pstr); *( tmp + strlen ( pstr ) ) = 0;strcpy( pstr, tmp ); 正確解答2:void loopmove ( char *pstr, int steps )int n =
17、strlen( pstr ) - steps;char tmpmax_len; memcpy( tmp, pstr + n, steps ); memcpy(pstr + steps, pstr, n ); memcpy(pstr, tmp, steps ); 27 static關鍵字至少有下列n個作用:(1)函數(shù)體內(nèi)static變量的作用范圍為該函數(shù)體,不同于auto變量,該變量的內(nèi)存只被分配一次,因此其值在下次調(diào)用時仍維持上次的值;(2)在模塊內(nèi)的static全局變量可以被模塊內(nèi)所用函數(shù)訪問,但不能被模塊外其它函數(shù)訪問;(3)在模塊內(nèi)的static函數(shù)只可被這一模塊內(nèi)的其它函數(shù)調(diào)用,這個函
18、數(shù)的使用范圍被限制在聲明它的模塊內(nèi);28const關鍵字至少有下列n個作用:(1)欲阻止一個變量被改變,可以使用const關鍵字。在定義該const變量時,通常需要對它進行初始化,因為以后就沒有機會再去改變它了;(2)對指針來說,可以指定指針本身為const,也可以指定指針所指的數(shù)據(jù)為const,或二者同時指定為const;(3)在一個函數(shù)聲明中,const可以修飾形參,表明它是一個輸入?yún)?shù),在函數(shù)內(nèi)部不能改變其值;(4)對于類的成員函數(shù),若指定其為const類型,則表明其是一個常函數(shù),不能修改類的成員變量;29:請寫一個c函數(shù),若處理器是big_endian的,則返回0;若是little_e
19、ndian的,則返回1解答:int checkcpu()union w int a;char b; c;c.a = 1;return (c.b = 1); 30. 堆和棧的區(qū)別?棧區(qū)(stack)- 由編譯器自動分配釋放 ,存放函數(shù)的參數(shù)值,局部變量的值等。其操作方式類似于數(shù)據(jù)結構中的棧。堆區(qū)(heap) - 一般由程序員分配釋放, 若程序員不釋放,程序結束時可能由OS回收 。1) 從靜態(tài)存儲區(qū)域分配。內(nèi)存在程序編譯的時候就已經(jīng)分配好,這塊內(nèi)存在程序的整個運行期間都存在。例如全局變量,static 變量。2) 在棧上創(chuàng)建。在執(zhí)行函數(shù)時,函數(shù)內(nèi)局部變量的存儲單元都可以在棧上創(chuàng)建,函數(shù)執(zhí)行結束時這
20、些存儲單元自動被釋放。棧內(nèi)存分配運算內(nèi)置于處理器的指令集。3) 從堆上分配,亦稱動態(tài)內(nèi)存分配。程序在運行的時候用malloc 或new 申請任意多少的內(nèi)存,程序員自己負責在何時用free 或delete 釋放內(nèi)存。動態(tài)內(nèi)存的生存期由程序員決定,使用非常靈活,但問題也最多。31.struct 和 class 的區(qū)別答案:struct 的成員默認是公有的,而類的成員默認是私有的。struct 和 class 在其他方面是功能相當?shù)摹?從感情上講,大多數(shù)的開發(fā)者感到類和結構有很大的差別。感覺上結構僅僅象一堆缺乏封裝和功能的開放的內(nèi)存位,而類就象活的并且可靠的社會成員,它有智能服務,有牢固的封裝屏障和
21、一個良好定義的接口。既然大多數(shù)人都這么認為,那么只有在你的類有很少的方法并且有公有數(shù)據(jù)(這種事情在良好設計的系統(tǒng)中是存在的!)時,你也許應該使用 struct 關鍵字,否則,你應該使用 class 關鍵字。 32.#include stdafx.h#define SQR(X) X*Xint main(int argc, char* argv)int a = 10;int k = 2;int m = 1;a /= SQR(k+m)/SQR(k+m); printf(%dn,a); return 0;這道題目的結果是什么啊? 2+1*2+1/2+1*2+1=2+2+0.5+2+1=-33.cons
22、t 符號常量;(1)const char *p(2)char const *p(3)char * const p說明上面三種描述的區(qū)別;如果const位于星號的左側,則const就是用來修飾指針所指向的變量,即指針指向為常量;如果const位于星號的右側,const就是修飾指針本身,即指針本身是常量。(1)const char *p一個指向char類型的const對象指針,p不是常量,我們可以修改p的值,使其指向不同的char,但是不能改變它指向非char對象,如:const char *p;char c1=a;char c2=b;p=&c1;/okp=&c2;/ok*p=c1;/error(
23、2)char const *p(3)char * const p這兩個好象是一樣的,此時*p可以修改,而p不能修改。(4)const char * const p這種是地址及指向對象都不能修改。34.下面是C語言中兩種if語句判斷方式。請問哪種寫法更好?為什么?int n;if (n = 10) / 第一種判斷方式if (10 = n) / 第二種判斷方式如果少了個=號,編譯時就會報錯,減少了出錯的可能行,可以檢測出是否少了=35.寫出運行結果:/ test2 union V struct X unsigned char s1:2;unsigned char s2:3;unsigned cha
24、r s3:3; x;unsigned char c; v; v.c = 100; printf(%d, v.x.s3); 3 /01136.用C+寫個程序,如何判斷一個操作系統(tǒng)是16位還是32位的?不能用sizeof()函數(shù)A1:16位的系統(tǒng)下,int i = 65536;cout i; / 輸出0;int i = 65535;cout i; / 輸出-1;32位的系統(tǒng)下,int i = 65536;cout i; / 輸出65536;int i = 65535;cout 65536 ) cout32 bitendl;else cout16 bitendl;37.C和C+有什么不同?從機制上:
25、c是面向過程的(但c也可以編寫面向對象的程序);c+是面向對象的,提供了類。但是,c+編寫面向對象的程序比c容易從適用的方向:c適合要求代碼體積小的,效率高的場合,如嵌入式;c+適合更上層的,復雜的; llinux核心大部分是c寫的,因為它是系統(tǒng)軟件,效率要求極高。從名稱上也可以看出,c+比c多了+,說明c+是c的超集;那為什么不叫c+而叫c+呢,是因為c+比c來說擴充的東西太多了,所以就在c后面放上兩個+;于是就成了c+C語言是結構化編程語言,C+是面向對象編程語言。C+側重于對象而不是過程,側重于類的設計而不是邏輯的設計。38.在不用第三方參數(shù)的情況下,交換兩個參數(shù)的值#include v
26、oid main() int i=60; int j=50; i=i+j; j=i-j; i=i-j; printf(i=%dn,i); printf(j=%dn,j);方法二:i=j;j=i;i=j;方法三:/ 用加減實現(xiàn),而且不會溢出a = a+b-(b=a).進程間通信的方式有?進程間通信的方式有 共享內(nèi)存, 管道 ,Socket ,消息隊列 ,等39 struct A char t:4; char k:4; unsigned short i:8; unsigned long m; sizeof(A)=?(不考慮邊界對齊)740給定結構struct A char t:4; char k:
27、4; unsigned short i:8; unsigned long m;問sizeof(A) = ?給定結構struct A char t:4; 4位 char k:4; 4位 unsigned short i:8; 8位 unsigned long m; / 偏移2字節(jié)保證4字節(jié)對齊; / 共8字節(jié)41下面的函數(shù)實現(xiàn)在一個固定的數(shù)上加上一個數(shù),有什么錯誤,改正 int add_n(int n) static int i=100; i+=n; return i; 答:因為static使得i的值會保留上次的值。去掉static就可了42 union a int a_int1;double
28、a_double;int a_int2;typedef structa a1;char y; b;class cdouble c_double;b b1;a a2;輸出coutsizeof(c)j+) & (i+ = j) i+=j;答:i = 544 unsigned short array=1,2,3,4,5,6,7;int i = 3;*(array + i) = ?答:445 試編寫函數(shù)判斷計算機的字節(jié)存儲順序是開序(little endian)還是降序(bigendian)答:bool IsBigendian()unsigned short usData = 0x1122;unsig
29、ned char *pucData = (unsigned char*)&usData;return (*pucData = 0x22);46簡述Critical Section和Mutex的不同點答:對幾種同步對象的總結1.Critical SectionA.速度快B.不能用于不同進程C.不能進行資源統(tǒng)計(每次只可以有一個線程對共享資源進行存取)2.MutexA.速度慢B.可用于不同進程C.不能進行資源統(tǒng)計3.SemaphoreA.速度慢B.可用于不同進程C.可進行資源統(tǒng)計(可以讓一個或超過一個線程對共享資源進行存取)4.EventA.速度慢B.可用于不同進程C.可進行資源統(tǒng)計47 請指出下
30、列程序中的錯誤并且修改void GetMemory(char *p) p=(char *)malloc(100);void Test(void) char *str=NULL; GetMemory=(str); strcpy(str,hello world); printf(str);A:錯誤-參數(shù)的值改變后,不會傳回GetMemory并不能傳遞動態(tài)內(nèi)存,Test函數(shù)中的 str一直都是 NULL。strcpy(str, hello world);將使程序崩潰。修改如下:char *GetMemory() char *p=(char *)malloc(100); return p;void T
31、est(void) char *str=NULL; str=GetMemory() strcpy(str,hello world); printf(str);方法二:void GetMemory2(char *p)變?yōu)槎壷羔?void GetMemory2(char *p, int num)*p = (char *)malloc(sizeof(char) * num);48用C 寫一個輸入的整數(shù),倒著輸出整數(shù)的函數(shù),要求用遞歸方法 ;答:void fun( int a )printf( %d, a%10 );a /= 10;if( a =0 )return;fun( a );49.頭文件中的
32、 ifndef/define/endif 干什么用?預處理答:防止頭文件被重復引用50. i nclude 和 i nclude “filename.h” 有什么區(qū)別?答:前者用來包含開發(fā)環(huán)境提供的庫頭文件,后者用來包含自己編寫的頭文件。51.在C+ 程序中調(diào)用被 C 編譯器編譯后的函數(shù),為什么要加 extern “C”聲明?答:函數(shù)和變量被C+編譯后在符號庫中的名字與C語言的不同,被extern C修飾的變量和函數(shù)是按照C語言方式編譯和連接的。由于編譯后的名字不同,C+程序不能直接調(diào)用C 函數(shù)。C+提供了一個C 連接交換指定符號extern“C”來解決這個問題。52. 回答下面的問題(6分)
33、(1).Void GetMemory(char *p, int num)*p = (char *)malloc(num);void Test(void)char *str = NULL;GetMemory(&str, 100);strcpy(str, hello);printf(str);請問運行Test 函數(shù)會有什么樣的結果?答:輸出“hello”(2). void Test(void)char *str = (char *) malloc(100);strcpy(str, “hello”);free(str);if(str != NULL)strcpy(str, “world”);prin
34、tf(str);請問運行Test 函數(shù)會有什么樣的結果?答:輸出“world”(3). char *GetMemory(void)char p = hello world;return p;void Test(void)char *str = NULL;str = GetMemory();printf(str);請問運行Test 函數(shù)會有什么樣的結果?答:無效的指針,輸出不確定53. 編寫strcat函數(shù)(6分)已知strcat函數(shù)的原型是char *strcat (char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串
35、。(1)不調(diào)用C+/C 的字符串庫函數(shù),請編寫函數(shù) strcat答:char * strcat (char * dst, const char * src)char * cp = dst;while( *cp )cp+; /* find end of dst */while( *cp+ = *src+ ) ; /* Copy src to end of dst */return( dst ); /* return dst */(2)strcat能把strSrc 的內(nèi)容連接到strDest,為什么還要char * 類型的返回值?答:方便賦值給其他變量54.程序什么時候應該使用線程,什么時候單線程
36、效率高。答:1耗時的操作使用線程,提高應用程序響應2并行操作時使用線程,如C/S架構的服務器端并發(fā)線程響應用戶的請求。3多CPU系統(tǒng)中,使用線程提高CPU利用率4改善程序結構。一個既長又復雜的進程可以考慮分為多個線程,成為幾個獨立或半獨立的運行部分,這樣的程序會利于理解和修改。其他情況都使用單線程。55.TCP/IP 建立連接的過程?(3-way shake)答:在TCP/IP協(xié)議中,TCP協(xié)議提供可靠的連接服務,采用三次握手建立一個連接。第一次握手:建立連接時,客戶端發(fā)送syn包(syn=j)到服務器,并進入SYN_SEND狀態(tài),等待服務器確認;第二次握手:服務器收到syn包,必須確認客戶的
37、SYN(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態(tài);第三次握手:客戶端收到服務器的SYNACK包,向服務器發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢,客戶端和服務器進入ESTABLISHED狀態(tài),完成三次握手。56.ICMP是什么協(xié)議,處于哪一層?答:Internet控制報文協(xié)議,處于網(wǎng)絡層(IP層)57 winsock建立連接的主要實現(xiàn)步驟?答:服務器端:socker()建立套接字,綁定(bind)并監(jiān)聽(listen),用accept()等待客戶端連接。客戶端:socker()建立套接字,連接(connect)服
38、務器,連接上后使用send()和recv(),在套接字上寫讀數(shù)據(jù),直至數(shù)據(jù)交換完畢,closesocket()關閉套接字。服務器端:accept()發(fā)現(xiàn)有客戶端連接,建立一個新的套接字,自身重新開始等待連接。該新產(chǎn)生的套接字使用send()和recv()寫讀數(shù)據(jù),直至數(shù)據(jù)交換完畢,closesocket()關閉套接字。58 動態(tài)連接庫的兩種方式?答:調(diào)用一個DLL中的函數(shù)有兩種方法:1載入時動態(tài)鏈接(load-time dynamic linking),模塊非常明確調(diào)用某個導出函數(shù),使得他們就像本地函數(shù)一樣。這需要鏈接時鏈接那些函數(shù)所在DLL的導入庫,導入庫向系統(tǒng)提供了載入DLL時所需的信息及
39、DLL函數(shù)定位。 2運行時動態(tài)鏈接(run-time dynamic linking),運行時可以通過LoadLibrary或LoadLibraryEx函數(shù)載入DLL。DLL載入后,模塊可以通過調(diào)用GetProcAddress獲取DLL函數(shù)的出口地址,然后就可以通過返回的函數(shù)指針調(diào)用DLL函數(shù)了。如此即可避免導入庫文件了59 IP組播有那些好處?答:Internet上產(chǎn)生的許多新的應用,特別是高帶寬的多媒體應用,帶來了帶寬的急劇消耗和網(wǎng)絡擁擠問題。組播是一種允許一個或多個發(fā)送者(組播源)發(fā)送單一的數(shù)據(jù)包到多個接收者(一次的,同時的)的網(wǎng)絡技術。組播可以大大的節(jié)省網(wǎng)絡帶寬,因為無論有多少個目標地
40、址,在整個網(wǎng)絡的任何一條鏈路上只傳送單一的數(shù)據(jù)包。所以說組播技術的核心就是針對如何節(jié)約網(wǎng)絡資源的前提下保證服務質(zhì)量。60.描述實時系統(tǒng)的基本特性 在特定時間內(nèi)完成特定的任務,實時性與可靠性。61.全局變量和局部變量在內(nèi)存中是否有區(qū)別?如果有,是什么區(qū)別? 全局變量儲存在靜態(tài)數(shù)據(jù)庫,局部變量在堆棧。62.什么是平衡二叉樹? 左右子樹都是平衡二叉樹 且左右子樹的深度差值的絕對值不大于1。63.堆棧溢出一般是由什么原因導致的? 沒有回收垃圾資源。64.冒泡排序算法的時間復雜度是什么? 時間復雜度是O(n2)。65.Internet采用哪種網(wǎng)絡協(xié)議?該協(xié)議的主要層次結構? Tcp/Ip協(xié)議 主要層次結
41、構為: 應用層/傳輸層/網(wǎng)絡層/數(shù)據(jù)鏈路層/物理層。66.Internet物理地址和IP地址轉換采用什么協(xié)議? ARP (Address Resolution Protocol)(地址解析協(xié)議)67.IP地址的編碼分為哪倆部分? IP地址由兩部分組成,網(wǎng)絡號和主機號。不過是要和“子網(wǎng)掩碼”按位與上之后才能區(qū)分哪些是網(wǎng)絡位哪些是主機位。68.不能做switch()的參數(shù)類型是:switch的參數(shù)不能為實型。注:必須是整數(shù)型常量,包括char,short,int,long等,不能是浮點數(shù)。Int main()Float a=3;Switch(a)Case 3:Printf(“a”);Return
42、0;/error C2450: switch expression of type float is illegal69、局部變量能否和全局變量重名? 答:能,局部會屏蔽全局。要用全局變量,需要使用:局部變量可以與全局變量同名,在函數(shù)內(nèi)引用這個變量時,會用到同名的局部變量,而不會用到全局變量。對于有些編譯器而言,在同一個函數(shù)內(nèi)可以定義多個同名的局部變量,比如在兩個循環(huán)體內(nèi)都定義一個同名的局部變量,而那個局部變量的作用域就在那個循環(huán)體內(nèi)。70、如何引用一個已經(jīng)定義過的全局變量? 答:extern 可以用引用頭文件的方式,也可以用extern關鍵字,如果用引用頭文件方式來引用某個在頭文件中聲明的全局變理,假定你將那個變寫錯了,那么在編譯期間會報錯,如果你用extern方式引用時,假定你犯了同樣的錯誤,那么在編譯期間不會報錯,而在連接期間報錯。71、全局變量可不可以定義在可被多個.C文件包含的頭文件中?為什么? 答:可以,在不同的C文件中以static形式來聲明同名全局變量。 可以在不同的C文件中聲明同名的全局變量,前提是其中只能有一個C文件中對此變量賦初值,此時連
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 泡沫塑料在文化藝術品保護中的應用考核試卷
- 煤化工廢水處理新技術與資源化利用考核試卷
- 認證認可ISO反賄賂管理體系考核試卷
- 室內(nèi)設計師AI的應用與發(fā)展
- 有機化學原料的結晶與純化技術考核試卷
- 設計可持續(xù)性與環(huán)保理念應用考核試卷
- 學生安全感恩教育
- 保護刷牙美術課件
- 包容萬象萬象共存課件
- 奧運標志設計說明模板
- 2024年中國鐵路國際有限公司招聘真題
- 石油化工閥門檢修及維護措施
- 2024年廣西物流職業(yè)技術學院招聘教職人員筆試真題
- 2024-2025湘科版小學科學四年級下冊期末考試卷及答案(三套)
- 中國企業(yè)科創(chuàng)力研究報告2024
- 大型海上發(fā)電用雙燃料燃氣輪機企業(yè)數(shù)字化轉型與智慧升級戰(zhàn)略研究報告
- 工程承包再轉讓合同協(xié)議
- (廣東二模)2025年廣東省高三高考模擬測試(二)歷史試卷(含答案)
- 2025湖南建投集團春季校園招聘239人筆試參考題庫附帶答案詳解
- 2025-2030全球冰雪產(chǎn)業(yè)經(jīng)營效益與發(fā)展投資策略建議研究報告
- 反邪教測試題及答案
評論
0/150
提交評論