2023年8月22學習筆記 程式設計師面試寶典

2021-06-08 19:00:44 字數 1626 閱讀 8382

#include using namespace std;

class a {};

class a1 {};

class b : public a {};

class c : public virtual b {};

class d : public a, public a1 {};

int main()

空類所佔空間為1,單一繼承的空類空間也為1,多重繼承的空類空間也為1,但是虛繼承涉及到虛表(虛指標),所以大小為4。1、sizeof操作符的結果型別是size_t,它在標頭檔案中的typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2、sizeof運算子,strlen是函式。

3、sizeof可以用型別或函式做引數,strlen只能用char*做引數,且必須以"\0"結尾的。

4、陣列做sizeof的引數不退化,傳遞給strlen就退化為指標。

5、大部分編譯程式在編譯的時候就把sizeof計算過了,是型別或是變數的長度,這就是sizeof(x)可以用來定義陣列維數的原因。

6、strlen的結果要在執行的時候才能計算出來,用來計算字串的長度,而不是型別佔記憶體的大小。

7、sizeof後如果是型別必須加括號,如果是變數名可以不加括號,這是因為sizeof是操作符而不是函式。

8、當使用了乙個結構型別或變數時,sizeof返回實際的大小。當使用一靜態的空間陣列時,sizeof返回全部陣列的尺寸。sizeof不能返回被動態分配的陣列或外部的陣列的尺寸,sizeof計算棧中分配的大小,不計算靜態變數。

9、陣列作為引數傳給函式時傳的是指標而不是陣列,傳遞的是陣列的首位址,如:func(char [8]), func(char ), func(char*)等價。在c++中傳遞陣列永遠都是傳遞指向陣列首元素的指標,編譯器不知道陣列的大小,如果想在函式內知道陣列的大小,需要進入函式後用memcpy將陣列複製出來,長度由另乙個形參傳進去。

10、計算結構變數的大小就必須討論資料對齊問題。

11、sizeof操作符不能用於函式型別、不完全型別或位字段。不完全型別指具有未知儲存大小資料的資料型別,如未知儲存大小的陣列型別、未知內容的結構或聯合型別、void型別等。

例如:

char* p;

p="hello";

會報錯(vs),因為p本身並不指向乙個存在的位址。

總結起來:

因為這個函式返回的是乙個區域性變數位址,當呼叫這個函式後,這個區域性變數str就隨著過程棧的釋放而釋放啦,所以返回的結果是不確定的,而且還是不安全的。

下面的**:

#include using namespace std;

char strone[14];

char* stra()

int main()

2023年3月8日C 學習筆記

1.const double pi 3.1415926 變數pi是用常量表示式初始化的,放在標頭檔案中 2.三種初始化 string 物件的方法 1 不帶初始化式,使用預設建構函式初始化 string 物件。2 使用乙個已存在的 string 物件作為初始化式,將新建立的 string 物件初 始化...

2023年8月25日 學習筆記 概率

面試題 please write out the program.include include define loop 1000 void main int ragnc 0 for int i 0 i loop i int x rand int y rand if x x y y 解析一下 設上面...

Android 學習筆記 2023年8月

8月7日 自定義view 加滾動條 這是來自中移動論壇的帖子 1.android自定義控制項是通過繼承view類實現的,新建乙個view類的子類,然後重寫ondraw方法,加入你建立的類名為 myview 那麼在activity中setcontentview myview 就可以顯示你自己定義的控制...