C++笔试考点之sizeof

申明:此文仅针对作者在笔试过程中遇到过的问题,不做全面总结。结果均经过32位平台验证。

1、基本数据类型

常见的基本数据类型有void、bool、char、int、short(int)、long(int)、float、double、long long、long double等。同类型有符号与无符号所占字节数相同,故在此不做区分。

类型 大小
void 0 byte
bool 1 byte
char 1 byte
short(int) 2 bytes
long(int) 4 bytes
int 4 bytes
float 4 bytes
double 8 bytes
long long 8 bytes
long double 8 bytes

2、指针

在32位机器下,指针的大小是4字节。

下面有个例子,

char* str="string";

sizeof(str)=_______

我们通常想到的答案是6或者是7。以为要求的是字符串的大小,但其实,str是一个字符指针,答案应该是4。

3、字符串

求字符串的大小时,很容易出错。因为常常会忽略字符串都是以"\0"结尾的。

上面那个例子,如果改为

char str[]="string";

sizeof(str)=_______

那么正确答案应该是7。

但是如果指定了字符串的长度,例如

char str[10]="string";

sizeof(str)=_______

那么答案则是10。

如果指定的字符串的长度小于字符串本身的长度,则会出错。

char str[6]="string";

sizeof(str)=_______

在VS2010下,提示错误,数组界限溢出。

4、结构体

struct A

{

   int a;

   char b;

   float c;

   double d;

 };

sizeof(A)=_______

在默认对齐方式下,答案为24。

5、类

class B

{

   int b;

   B();

   ~B(); 

};

sizeof(B)=_______

答案为4。计算方式与结构体相同。

6、函数

等于函数返回值的大小。

C++笔试考点之sizeof,布布扣,bubuko.com

C++笔试考点之sizeof

上一篇:C++编写俄罗斯方块游戏


下一篇:SSL握手通信详解及linux下c/c++ SSL Socket代码举例