色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

什么時候會用到sizeof

李中冰2年前18瀏覽0評論

什么時候會用到sizeof?

sizeof程序員筆試中常考題目,看似簡單的指令,其中埋了很多雷,要多注意以防傷及吾身。

sizeof:判斷數據類型長度符的關鍵詞。

數組

char p[10] = “abcde”;

printf(“%d”,sizeof(p));

10

因為p是一個數組,含有10個char類型數據,所以返回10。

指針

char *p1 =new char[10];

strcpy_s(p1,10,“abcde”);

printf(“%d”,sizeof(p1));

4

指針存放的是地址,由于32位機器的地址只要4個字節就可以表示了,所以指針的大小都是4。

字符串

char a1[]=“abcde”;

char a2[]={'a','b','c','d','e'};

a1的sizeof返回6

a2的sizeof返回5

因為a1是字符串常量,會以“\0”結尾。

static變量

class A

public:

static int a;

Int b;

}

sizeof(A)為4,因為stfatic屬于存在靜態存儲區,只會統計b的大小。

函數

class A0

public:

void add(){};

sizeof返回1,空類的大小都為1。

class A0

public:

int i;

Void add(){};

}

返回4,int的數據長度。

虛函數

class A1

public:

virtual void add(){};

返回4,虛函數的指針為4。

字節對齊

需要滿足三條準則:

1、結構體變量的首地址能夠被其最寬的基本類型成員的大小所整除;

2. 結構體每個成員相對于結構體首地址的偏移量都是成員大小的整數倍,如有需要編譯器會在成員之間加上填充字節;

3. 結構體的總大小為結構體的最寬基本類型成員大小的整數倍,如有需要編譯器會在最末一個成員之后加入填充字節。

struct Ex1

short s1;

int i1;

char c1;

sizeof為12,2+2+4+1+3=12。

第二個2和最后一個3分別基于上述2、3準則添加。

struct ex2

{

char c1;

Short s1;

Int i1;

}

sizeof值為8;1+1+2+4=8