面試雜項題

2022-05-09 17:47:58 字數 1725 閱讀 5776

編寫strcat函式

已知strcat函式的原型是char *strcat (char *strdest, const char *strsrc);

其中strdest 是目的字串,strsrc 是源字串。

(1)不呼叫c++/c 的字串庫函式,請編寫函式 strcat

答:vc原始碼:

char * __cdecl strcat (char * dst, const char * src)

(2)strcat能把strsrc 的內容連線到strdest,為什麼還要char * 型別的返回值?

答:方便賦值給其他變數

不用任何區域性和全域性變數實現int strlen(char *a)

#include #include #include #include using namespace std;

/*int strlen(char *a)

*/int strlen(char *a)

int main(void)

~t() };

int main()

大家可以自己執行這個程式,看一看 delete p1 和 delete p1 的不同結果,我就不在這裡貼執行結果了。

從執行結果中我們可以看出,delete p1 在**空間的過程中,只有 p1[0] 這個物件呼叫了析構函式,其它物件如 p1[1]、p1[2] 等都沒有呼叫自身的析構函式,這就是問題的癥結所在。如果用 delete,則在**空間之前所有物件都會首先呼叫自己的析構函式。

基本型別的物件沒有析構函式,所以**基本型別組成的陣列空間用 delete 和 delete 都是應該可以的;但是對於類物件陣列,只能用 delete。對於 new 的單個物件,只能用 delete 不能用 delete **空間。

所以乙個簡單的使用原則就是:new 和 delete、new 和 delete 對應使用。

陣列與指標的區別

陣列要麼在靜態儲存區被建立(如全域性陣列),要麼在棧上被建立。指標可以隨時指向任意型別的記憶體塊。

(1)修改內容上的差別

char a = 「hello」;

a[0] = 『x』;

char *p = 「world」; // 注意p 指向常量字串

p[0] = 『x』; // 編譯器不能發現該錯誤,執行時錯誤

(2) 用運算子sizeof 可以計算出陣列的容量(位元組數)。sizeof(p),p 為指標得到的是乙個指標變數的位元組數,而不是p 所指的記憶體容量。c++/c 語言沒有辦法知道指標所指的記憶體容量,除非在申請記憶體時記住它。注意當陣列作為函式的引數進行傳遞時,該陣列自動退化為同型別的指標。

char a = "hello world";

char *p = a;

cout<< sizeof(a) << endl; // 12 位元組

cout<< sizeof(p) << endl; // 4 位元組

計算陣列和指標的記憶體容量

void func(char a[100])

給出程式的輸出結果 .

#include using namespace std;

struct a

};struct b: public a

};struct c

b b;

a a;

};int main()

{ c c;

cout<

執行緒雜項題

1 注意加鎖的順序,加鎖都用同一順序。2 注意鎖的超時機制 1 可以用setpriority設定優先順序 1 10 自動對應作業系統的優先順序。2 getstate可以獲取執行緒狀態。不推薦 thread.stop 會惡意終止執行緒,破壞原子性。推薦 thread.interrupt 設定推出位,由...

面試題雜項

1,9月6日,網新恒天2014校園招聘筆試程式設計題 已知memcpy的函式為 void memcpy void dest const void src size t count 其中dest是目的指標,src是源指標。不呼叫c c的memcpy庫函式,請編寫memcpy。點評 老題,參 如下voi...

c 面試題雜項整理

static用法及優點 用法 不能在類宣告中初始化,不能通過建構函式初始化,在定義時初始化 1 static 成員 在類的作用域,避免與其他類成員,全域性變數衝突。阻止乙個類的例項化 純虛函式,建構函式宣告為public 在類內部建物件,不允許在外部建物件main 執行前做了什麼 全域性物件的建構函...