首页 > 学院 > 开发设计 > 正文

sizeof用法总结

2019-11-08 01:43:08
字体:
来源:转载
供稿:网友

A. 参数为数据类型或者为一般变量。例如sizeof(int),sizeof(long)等等。这种情况要注意的是不同系统系统或者不同编译器得到的结果可能是不同的。例如int类型在16位系统中占2个字节,在32位系统中占4个字节。

B. 参数为数组或指针。下面举例说明.

int a[50]; //sizeof(a)=4*50=200; 求数组所占的空间大小int *a=new int[50];// sizeof(a)=4; a为一个指针,sizeof(a)是求指针 //的大小,在32位系统中,当然是占4个字节。

C. 参数为结构或类。Sizeof应用在类和结构的处理情况是相同的。        但有两点需要注意:        第一、结构或者类中的静态成员不对结构或者类的大小产生影响,因为静态变量的存储位置与结构或者类的实例地址无关。        第二、没有成员变量的结构或类的大小为1,因为必须保证结构或类的每一个实例在内存中都有唯一的地址。

       举例:

Class Test{int a;static double c};//sizeof(Test)=4.Test *s;//sizeof(s)=4,s为一个指针。Class test1{ };//sizeof(test1)=1;

D. 参数为其他。下面举例说明。

int func(char s[5]);{ cout<<sizeof(s); //这里将输出4,本来s为一个数组,但由于做为函数的参数在传递的时候系统处理为一个指针, //所以sizeof(s)实际上为求指针的大小。 return 1;}sizeof(func(“1234”))=4 //因为func的返回类型为int,所以相当于求sizeof(int).

以上为sizeof的基本用法,在实际的使用中要注意分析gcc的分配变量的分配策略,这样的话可以避免一些错误。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表