手机版
你好,游客 登录 注册
背景:
阅读新闻

C语言中的sizeof详解

[日期:2012-12-20] 来源:Linux社区   作者:huangminqiang [字体: ]

七、sizeof用法总结

  在VC中,sizeof有着许多的用法,而且很容易引起一些错误。下面根据sizeof后面的参数对sizeof的用法做个总结。

  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 << s ; //函数的参数在传递的时候系统处理为一个指针,所以sizeof(s)实际上为求指针的大小。

return 1;

}

sizeof(func( "1234" ))=4; //因为func的返回类型为int,所以相当于求sizeof(int).

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

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款