請填寫bool , float, 指標變數與「零值」比較的 if 語句。(10分)
以下為windows nt下的32位c++程式,請計算sizeof的值(10分)
標頭檔案中的 ifndef/define/endif 幹什麼用?(5分)
答:防止該標頭檔案被重複引用。
#include 和 #include 「filename.h」 有什麼區別?(5分)
答:對於#include ,編譯器從標準庫路徑開始搜尋 filename.h
對於#include 「filename.h」 ,編譯器從使用者的工作路徑開始搜尋 filename.h
const 有什麼用途?(請至少說明兩種)(5分)
答:(1)可以定義 const 常量
(2)const可以修飾函式的引數、返回值,甚至函式的定義體。被const修飾的東西都受到強制保護,可以預防意外的變動,能提高程式的健壯性。
在c++ 程式中呼叫被 c編譯器編譯後的函式,為什麼要加 extern 「c」? (5分)
答:作為extern是c/c++語言中表明函式和全域性變數作用範圍(可見性)的關鍵字,該關鍵字告訴編譯器,其宣告的函式和變數可以在本模組或其它模組中使用。
extern "c"是連線申明(linkage declaration),被extern "c"修飾的變數和函式是按照c語言方式編譯和連線的,來看看c++中對類似c的函式是怎樣編譯的:
c++語言支援函式過載,c語言不支援函式過載。函式被c++編譯後在庫中的名字與c語言的不同。假設某個函式的原型為: void foo(int x, int y);
該函式被c編譯器編譯後在庫中的名字為_foo,而c++編譯器則會產生像_foo_int_int之類的名字。
c++提供了c連線交換指定符號extern「c」來解決名字匹配問題。
請簡述以下兩個for迴圈的優缺點(5分)
有關記憶體的思考題(每小題5分,共20分)
編寫strcpy函式(10分)
已知strcpy函式的原型是
char *strcpy(char *strdest, const char *strsrc);
其中strdest是目的字串,strsrc是源字串。
(1)不呼叫c++/c的字串庫函式,請編寫函式 strcpy
char *strcpy(char *strdest, const char *strsrc)
(2)strcpy能把strsrc的內容複製到strdest,為什麼還要char * 型別的返回值?
答:為了實現鏈式表示式2分
例如 int length = strlen( strcpy( strdest, 「hello world」) );
編寫類string的建構函式、析構函式和賦值函式(25分)
已知類string的原型為:
class string
;請編寫string的上述4個函式。
標準答案:
// string的析構函式
string::~string(void3分
// string的普通建構函式
string::string(const char *str6分
}// 拷貝建構函式
string::string(const string &other) // 3分
// 賦值函式
string & string::operate =(const string &other) // 13分
{1) 檢查自賦值4分
if(this == &other)
return *this;
// (2) 釋放原有的記憶體資源3分
delete m_data;
C 面試筆試題
4.在什麼時候需要使用 常引用 如果既要利用引用提高程式的效率,又要保護傳遞給函式的資料不在函式中被改變,就應使用常引用。常引用宣告方式 const 型別識別符號 引用名 目標變數名 例1int a const int ra a ra 1 錯誤 a 1 正確 例2string foo void ba...
C 面試筆試題
4.在什麼時候需要使用 常引用 如果既要利用引用提高程式的效率,又要保護傳遞給函式的資料不在函式中被改變,就應使用常引用。常引用宣告方式 const 型別識別符號 引用名 目標變數名 例1int a const int ra a ra 1 錯誤 a 1 正確 例2string foo void ba...
Google面試筆試題目
今年10月底,google在美國 麻省技術評論 linuxjournal mensa 今日物理 等幾本專業雜誌上刊登了乙份 google實驗室能力傾向測試 的 試卷,開頭蠱惑地寫著 試試看!把答案寄回google,你有希望去google總部參觀 並成為我們其中一員 有興趣的人可以做完了郵寄給goog...