关键字sizeof

举报
用户已注销 发表于 2021/11/19 04:21:21 2021/11/19
【摘要】 sizeof用来求出所占的字节数 sizeof是个关键字,不是函数,sizeof是在编译期间求值。 (1)基本类型和类的大小 cout<<sizeof(char)<<" "<<sizeof(int)<<" "<<sizeof(string)<<" "&l...

sizeof用来求出所占的字节数

sizeof是个关键字,不是函数,sizeof是在编译期间求值。

(1)基本类型和类的大小

cout<<sizeof(char)<<"  "<<sizeof(int)<<"  "<<sizeof(string)<<"  "<<sizeof(vector<int>);
 

1  4  32  20

类的大小都是固定的,和对象无关,具体怎么算没仔细研究,好像是只和成员变量和虚函数表有关。

(2)数组的大小是数组所占内存的总大小,指针的大小是系统的大小

代码:


      int a[]={0,1,2,3,4,5};
      int *p=a;
      cout<<sizeof(a)<<" "<<sizeof(p);
  
 

输出:

24  4

PS:

我们用64的win10操作系统的时候,指针应该是8个字节,但是编译器往往选择编译成32位的程序,所以这指针还是4个字节。

(3)数组和指针作为参数传递时,都是传递指针

代码:


      int getSize(int x[])
      {
         return sizeof(x);
      }
      int getSize2(int* p)
      {
         return sizeof(p);
      }
      int main()
      {
         int a[]={0,1,2,3,4,5};
         int *p=a;
          cout<<getSize(a)<<" "<<getSize(p)<<" "<<getSize2(a)<<" "<<getSize2(p);
     	return 0;
      }
  
 

输出:

4  4  4  4

(4)char数组表示的字符串

代码:


         char s1[]="abcdef";
         char s2[]="";
          cout<<sizeof(s1)<<" "<<sizeof(s2);
  
 

输出:

7  1

文章来源: blog.csdn.net,作者:csuzhucong,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/nameofcsdn/article/details/105667411

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。