0
点赞
收藏
分享

微信扫一扫

sizeof用法


 sizeof用法

定义:sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。

语法:sizeof有两种语法:

例子:

 

下面我们来看一些实际编程中常见类型的sizeof:(均在32位系统下测试)

基本数据类型的sizeof:

结果如下:

sizeof用法_C语言

这些基本的类型,sizeof的结果都为该类型所占的空间的大小,但是当为数组的时候,sizeof的值=数组元素类型 x 元素个数;例如 int i1[2]={0,1},则sizeof为:4x2=8;

 

指针变量的sizeof:

sizeof用法_指针变量_02

在32位计算机中,一个指针变量的返回值通常是4(注意结果是以字节为单位),在64位系统中指针变量的sizeof通常为8

由此也可知,指针变量的sizeof值与指针所指的对象没有任何关系,都为4。

其实指针的本质就是整形,指针又叫无符号的整形,所以,可以说指针的sizeof都为4.

 

结构体的sizeof:(最麻烦的部分)

由于比较麻烦,我也讲不怎么清楚,还是建议去下面这个博客看看能不能理解


 

总结:

    sizeof(数组): 分配的数组空间大小;
    sizeof(指针): 该指针所用的空间大小(在32位系统是4,在64系统是8);
    sizeof(类型): 该类型所占的空间大小;
    sizeof(对象): 对象的实际占用空间大小;
    sizeof(函数): 函数的返回类型所占的空间大小。函数的返回类型不能是void

 

附:

sizeof和strlen的区别:

  1. sizeof求的是占用内存的大小,strlen求的是字符串的实际长度;(sizeof统计'\0',strlen不统计'\0')
  2. sizeof是算符,strlen是函数;
  3. sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''\0''结尾的;(sizeof还可以用函数做参数)
  4. 数组作为参数传给函数时传的是​​指针​​而不是数组,传递的是数组的首地址,
  5. 如:​​fun(​​​​char​​​​[8])fun(​​​​char​​​​[])​​  都等价于 fun(char *)

 


举报

相关推荐

0 条评论