您的位置:首页 > 编程语言 > C语言/C++

C/C++语言sizeof相关计算

2017-04-29 12:27 411 查看

C语言中的sizeof操作符

注:本博客中的结果均是指运行在codeBlock16.01+window10上,sizeof显示的结果均是以字节为单位的。

对数据类型使用sizeof

sizeof(long long) -> 8

sizeof(int) -> 4

sizeof(char) -> 1

sizeof(string) -> 4

sizeof(float) -> 4

sizeof(double) -> 8

对数据类型指针使用sizeof

sizeof(char *) -> 4

sizeof(int *) -> 4

sizeof(long long *) -> 4

sizeof(float *) -> 4

sizeof(double *) -> 4

sizeof(string *) -> 4

对数组使用sizeof

int arr_a[10] ,sizeof(arr_a) -> 40

char arr_b[10],sizeof(arr_b) -> 10



对类class使用sizeof

class A1

{

A();

~A(); //有无构造函数或者是其他复杂的构造函数结果都是 1 !

static int x; //可以是int、long long、double、char…,注释掉这一行结果也是一样的。就是说static并没有增加类的存储空间

};

class A2

{

A();

~A();

int x;

};

class A3

{

A();

~A();

double x;

};

class A4

{

A();

~A();

int x; //或者是char、double、string、long long(好像是有什么字节对齐的约束)

double y;

};

sizeof(class A1) -> 1;sizeof(A2) -> 4;sizeof(A3) -> 8;sizeof(A4) -> 16

以上仅仅是简单的对class使用sizeof的结果,有关虚类、虚继承的参考链接(在此对博主的好心分享表示感谢):http://blog.sina.com.cn/s/blog_728161840100u2ib.html

http://blog.csdn.net/hairetz/article/details/4171769

关于字节对齐的内容参考(在此对博主一并表示感谢):http://blog.csdn.net/hairetz/article/details/4084088

对函数使用sizeof—取决于函数的返回类型

void fun0(int x,int y)

{

int z = x+y;

}

char fun1(int x,int y)

{

return x+y;

}

int fun2(int x,int y)

{

return x+y;

}

double fun3(int x,int y)

{

return x+y;

}

long long fun4(int x,int y)

{

return x+y;

}

string fun5(int x,int y)

{

return “1+2”;

}

sizeof(fun0(1,2)) -> 1, sizeof(fun1(1,2)) -> 1 , sizeof(fun2(1,2)) -> 4 , sizeof(fun3(1,2)) -> 8 , sizeof(fun4(1,2)) -> 8 , sizeof(fun5(1,2)) -> 4.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  sizeof