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

正文內(nèi)容

c和c++程序設(shè)計(jì)員應(yīng)聘常見面試試題深入剖析-文庫吧

2025-07-18 10:03 本頁面


【正文】 試題 5: char *GetMemory( void ) { char p[] = hello world。 return p。 } void Test( void ) { char *str = NULL。 str = GetMemory()。 printf( str )。 } 試題 6: void GetMemory( char **p, int num ) { *p = (char *) malloc( num )。 } void Test( void ) { char *str = NULL。 GetMemory( amp。str, 100 )。 strcpy( str, hello )。 printf( str )。 } 試題 7: void Test( void ) { char *str = (char *) malloc( 100 )。 strcpy( str, hello )。 free( str )。 ... //省略的其它語句 } 解答: 試題 4傳入中 GetMemory( char *p )函數(shù)的形參為字符串指針,在函數(shù)內(nèi)部修改形參并不能真正的改變傳入形參的值,執(zhí)行完 char *str = NULL。 GetMemory( str )。 后的 str仍然為 NULL; 試題 5中 char p[] = hello world。 return p。 的 p[]數(shù)組為函數(shù)內(nèi)的局部自動(dòng)變量,在函數(shù)返回后,內(nèi)存已經(jīng)被釋放。這是許多程序員常犯的錯(cuò)誤,其根源在于不理解變量的生存期。 試題 6的 GetMemory 避免了試題 4 的問題,傳入 GetMemory 的參數(shù)為字符串指針的指針,但是在 GetMemory 中執(zhí)行申請(qǐng)內(nèi)存及賦值語句 *p = (char *) malloc( num )。 后未判斷內(nèi)存是否申請(qǐng)成功,應(yīng)加上: if ( *p == NULL ) { ...//進(jìn)行申請(qǐng)內(nèi)存失敗處理 } 試題 7存在與試題 6 同樣的問題,在執(zhí)行 char *str = (char *) malloc(100)。 后未進(jìn)行內(nèi)存是否申請(qǐng)成功的判斷;另外,在 free(str)后未置 str 為空,導(dǎo)致可能變成一個(gè) “ 野 ” 指針,應(yīng)加上: str = NULL。 試題 6的 Test 函數(shù)中也未對(duì) malloc 的內(nèi)存進(jìn)行釋放。 剖析: 試題 4~ 7 考查面試者對(duì)內(nèi)存操作的理解程度,基本功扎實(shí)的面試者一般都能正確的回答其中 50~60 的錯(cuò)誤。 但是要完全解答正確,卻也絕非易事。 對(duì)內(nèi)存操作的考查主要集中在: ( 1)指針的理解; ( 2)變量的生存期及作用范圍; ( 3)良好的動(dòng)態(tài)內(nèi)存申請(qǐng)和釋放習(xí)慣。 再看看下面的一段程序有什么錯(cuò)誤: swap( int* p1,int* p2 ) { int *p。 *p = *p1。 *p1 = *p2。 *p2 = *p。 } 在 swap 函數(shù)中, p是一個(gè) “ 野 ” 指針,有可能指向系統(tǒng)區(qū),導(dǎo)致程序運(yùn)行的崩潰。在 VC++中 DEBUG 運(yùn)行時(shí)提示錯(cuò)誤 “Access Violatio n” 。該程序應(yīng)該改為: swap( int* p1,int* p2 ) { int p。 p = *p1。 *p1 = *p2。 *p2 = p。 } 試題 1:分別給出 BOOL, int, float,指針變量 與 “零值 ”比較的 if 語句(假設(shè)變量名為 var) 解答: BOOL 型變量: if(!var) int 型變量: if(var==0) float 型變量: const float EPSINON = 。 if ((x = EPSINON) amp。amp。 (x = EPSINON) 指針變量: if(var==NULL) 剖析: 考查對(duì) 0值判斷的 “內(nèi)功 ”, BOOL 型變量的 0判斷完全可以寫成 if(var==0),而 int 型變量也可以寫成 if(!var),指針變量的判斷也可以寫成 if(!var),上述寫法雖然程序都能正確運(yùn)行,但是未能清晰地表達(dá)程序的意思。 一般的,如果想讓 if 判斷一個(gè)變量的 “真 ”、 “假 ”,應(yīng)直接使用 if(var)、 if(!var),表明其為 “邏輯 ”判斷;如果用 if 判斷一個(gè)數(shù)值型變量 (short、 int、 long等 ),應(yīng)該用 if(var==0),表明是與 0進(jìn)行 “數(shù)值 ”上的比較;而判斷指針則適宜用 if(var==NULL),這 是一種很好的編程習(xí)慣。 浮點(diǎn)型變量并不精確,所以不可將 float 變量用 “==”或 “! =”與數(shù)字比較,應(yīng)該設(shè)法轉(zhuǎn)化成 “=”或 “=”形式。如果寫成 if (x == ),則判為錯(cuò),得 0 分。 試題 2:以下為 Windows NT 下的 32 位 C++程序,請(qǐng)計(jì)算 sizeof 的值 void Func ( char str[100] ) { sizeof( str ) = ? } void *p = malloc( 100 )。 sizeof ( p ) = ? 解答: sizeof( str ) = 4 sizeof ( p ) = 4 剖析: Func ( char str[100] )函數(shù)中數(shù)組名作為函數(shù)形參時(shí),在函數(shù)體內(nèi),數(shù)組名失去了本身的內(nèi)涵,僅僅
點(diǎn)擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1