sizeof是函数吗,具体使用方法

1.sizeof是运算符,不是函数;
2.sizeof不能求void类型的长度,void本来申明的就是一个空类型,自己都不知道自己的类型有多大;但是sizeof可以求得void指针的大小;

int a = 10;
void* p = &a;

printf(“%d\n”,sizeof(p));
输出的结果为4
3.sizeof求一个指针的大小,不管指针指向的是什么类型,在32位平台下都是4;
4.sizeof可以求一个静态数组的整体大小;

int arr[10] = {1,2,3,4,5,6,7,8,9,10};
sizeof(arr);

此时求得就是整个数组的大小,大小为40;

5.但是数组名作为参数,在传参的时候 ,sizeof求得的是当成常指针来计算的,在32平台下为4

int Binary_search(int* arr, int left, int right, int k)
{}
sizeof(arr);

这个时候数组名代表的就不在是整个数组了
6.sizeof不能求一个动态数组的大小;

  int *p = new int [10];
   sizeof(p) ;

这个时候p的大小时4,因为此时p是一个指针;

7.sizeof不能求不完整的数组的大小;
例如,file1.cpp 和file2.cpp ,其中fiel1中有如下定义;

   int arr1[10]={1,2,3,4,5,6,7,8,9,0};
   int arr2[10]={1,3,5,7,9,2,4,6,8,10};

file2中如下:

  extern arr1[];
  extern arr2[10];

cout<<sizeof(arr1);
cout<<sizeof(arr2);

第一条语句可以求出arr1的大小是40;第二条语句会报错;

7.当表达式做为sizeof操作数的时候,他的结果是表带是计算结果类型的大小,但是他不对表达式求值;
例如:

int a = 10;
char b='q';
sizeof(a+b);
sizeof(b=a+b);

表达式1得出的结果是4,表达式2得出的结果是1;

因为表达式一的操作数结果为int 而操作数2的结果为char;

8.sizeof求得的结构体大小,不是各个成员变量大小之和,结构体存在内存对齐;
9.sizeof不能求出结构体位段的大小,但是可以求出位段每个成员的大小;

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值