c++面試題之常見問題

1:變量的聲明和定義有什麼區別
    爲變量分配地址和存儲空間的稱爲定義,不分配地址的稱爲聲明。一個變量可以在多個地方聲明,但是隻在一個地方定義。加入extern修飾的是變量的聲明,說明此變量將在文件以外或在文件後面部分定義。
2:寫出bool 、int、 float、指針變量與“零值”比較的if語句
    bool型數據: if( flag ) { A; } else { B; }
    int型數據: if( 0 != flag ) { A; } else { B; }
    指針型數: if( NULL == flag ) { A; } else { B; }
    const float EPSINON = 0.00001;
    float型數據: if ( ( flag >= NORM ) && ( flag <= NORM ) ) { A;}

    注意:應特別注意在int、指針型變量和“零值”比較的時候,把“零值”放在左邊,這樣當把“==”誤寫成“=”時,編譯器可以報錯,否則這種邏輯錯誤不容易發現,並且可能導致很嚴重的後果。
3:sizeof和strlen的
區別
sizeof和strlen有以下區別:
 sizeof是一個操作符,strlen是庫函數。
 sizeof的參數可以是數據的類型,也可以是變量,而strlen只能以結尾爲'\0'的字符串作參數。
 編譯器在編譯時就計算出了sizeof的結果。而strlen函數必須在運行時才能計算出來。並且sizeof計算的是數據類型佔內存的大小,而strlen計算的是字符串實際的長度。
 數組做sizeof的參數不退化,傳遞給strlen就退化爲指針了。
   注意:有些是操作符看起來像是函數,而有些函數名看起來又像操作符,這類容易混淆的名稱一定要加以區分,否則遇到數組名這類特殊數據類型作參數時就很容易出錯。最容易混淆爲函數的操作符就是sizeof。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章