一、sizeof的概念 
  sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。

二、sizeof的使用方法 
  1、用于数据类型

  sizeof使用形式:sizeof(type)

  数据类型必须用括号括住。如sizeof(int)。

  2、用于变量

  sizeof使用形式:sizeof(var_name)或sizeof var_name

  变量名可以不用括号括住。如sizeof (var_name),sizeof var_name等都是正确形式。带括号的用法更普遍,大多数程序员采用这种形式。

  注意:sizeof操作符不能用于函数类型,不完全类型或位字段。不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、未知内容的结构或联合类型、void类型等。

  如sizeof(max)若此时变量max定义为int max(),sizeof(char_v) 若此时char_v定义为char char_v [MAX]且MAX未知,sizeof(void)都不是正确形式。

三、sizeof的结果 
  sizeof操作符的结果类型是size_t,它在头文件<stddef.h>中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。

  1、若操作数具有类型char、unsigned char或signed char,其结果等于1。

  ANSI C正式规定字符类型为1字节。

  2、int、unsigned int 、short int、unsigned short 、long int 、unsigned long 、float、double、long double类型的sizeof 在ANSI C中没有具体规定,大小依赖于实现,一般可能分别为2、2、2、2、4、4、4、8、10。

  3、当操作数是指针时,sizeof依赖于编译器。例如Microsoft C/C++7.0中,near类指针字节数为2,far、huge类指针字节数为4。一般Unix的指针字节数为4。

  4、当操作数具有数组类型时,其结果是数组的总字节数。

  5、联合类型操作数的sizeof是其最大字节成员的字节数。结构类型操作数的sizeof是这种类型对象的总字节数,包括任何垫补在内。

  让我们看如下结构:

  struct {char b; double x;} a;

  在某些机器上sizeof(a)=12,而一般sizeof(char)+ sizeof(double)=9。

  这是因为编译器在考虑对齐问题时,在结构中插入空位以控制各成员对象的地址对齐。如double类型的结构成员x要放在被4整除的地址。

  6、如果操作数是函数中的数组形参或函数类型的形参,sizeof给出其指针的大小。

四、sizeof与其他操作符的关系 
  sizeof的优先级为2级,比/、%等3级运算符优先级高。它可以与其他操作符一起组成表达式。如i*sizeof(int);其中i为int类型变量。

五、sizeof的主要用途 
  1、sizeof操作符的一个主要用途是与存储分配和I/O系统那样的例程进行通信。例如:

  void *malloc(size_t size),

  size_t fread(void * ptr,size_t size,size_t nmemb,FILE * stream)。

  2、sizeof的另一个的主要用途是计算数组中元素的个数。例如:

  void * memset(void * s,int c,sizeof(s))。

六、建议 
  由于操作数的字节数在实现时可能出现变化,建议在涉及到操作数字节大小时用ziseof来代替常量计算。

解析C语言中的sizeof相关推荐

  1. c语言sizeof(test),解析C语言中的sizeof

    一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等.它并不是函数.sizeof操作符以字节形式给出了其操作数的存储大小.操作数可以是一个表达式或括在括号内的 ...

  2. sizeof 在C语言的作用,C语言中的sizeof的用法详解

    C语言中的sizeof的用法详解 一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等.它并不是函数.sizeof操作符以字节形式给出了其操作数的存储大小.操 ...

  3. c语言中sizeof是一个标准库函数,对C语言中的sizeof的介绍分析

    对C语言中的sizeof的介绍分析 引导语::sizeof是C语言中判断数据类型或者表达式长度符,以下是百分网小编分享给大家的对C语言中的sizeof的介绍分析,欢迎阅读! 1.定义 sizeof是C ...

  4. c语言中sizeof结构体,C语言中的sizeof用法

    C语言中的sizeof是一个很有意思的关键字,经常有人用不对,搞不清不是什么.我以前也有用错的时候,现在写一写,也算是提醒一下自己吧.反正现在来看,还在搞sizeof是什么意思,怎么用正确,还是有点搞 ...

  5. C语言中的sizeof()和strlen()的区别

    C语言中的sizeof和strlen的区别 sizeof() strlen 大量案例(想深入了解可以看) 1.(花括号int的sizeof()) 2.(花括号char的sizeof()) 3.(字符串 ...

  6. Java中的enum详细解析------Java 语言中 Enum 类型的使用介绍

    Enum 类型的介绍 枚举类型(Enumerated Type) 很早就出现在编程语言中,它被用来将一组类似的值包含到一种类型当中.而这种枚举类型的名称则会被定义成独一无二的类型描述符,在这一点上和常 ...

  7. C语言中的sizeof解析

    1. 定义: sizeof是C/C++中的一个操作符(operator),作用就是返回一个对象或者类型所占的内存字节数.返回 值类型为size_t,在头文件stddef.h中定义.这是一个依赖于编译系 ...

  8. java中sizeof函数,C语言中,sizeof运算符有什么作用?

    满意答案 minwoo1 2014.11.18 采纳率:54%    等级:9 已帮助:415人 通常用来计算一个变量或者类型的大小的,单位是字节 譬如sizeof(char)==1,sizeof(i ...

  9. C语言中的sizeof中的数组和指针

    1.引子 今日在看动态规划的0-1背包问题,看完后还是打算自己写着试试,毕竟实践才能出真知嘛.动态规划的结果是个二维数组dp,我copy书上的例子进行初始 memset(dp,0,sizeof(dp) ...

最新文章

  1. 设计模式之模板方法模式(Template Method)摘录
  2. 以Linux系统上的gcc为例,解密C语言编译背后的全过程!
  3. python内置函数open_python_内置函数和open
  4. 当maven说“直到MyRepo的更新间隔过去时,才会重新尝试解析”,该间隔在哪里指定?
  5. VMware中安装CentOS Linux release 7.4.1708 (Core)
  6. 流式视频处理架构设计
  7. Perforce使用指南_forP4V
  8. matlab保存格式可以用cad打开文件,怎么将TXT文件导入CAD中生成图形
  9. IoC框架,依赖注入
  10. leetcode - Minimum Depth of Binary Tree
  11. C#中的Invoke和BeginInvoke
  12. iPhone开发 捕获提交异常日志
  13. Mac 卸载Symantec软件
  14. 基于ssm的酒店客房管理系统(含数据库结构文档)
  15. 洛洛阅读—自己写的简约Android小说阅读器背景
  16. js之win10计算器
  17. 计算机cpu风扇不转怎么办,如果计算机启动时cpu风扇不旋转,该怎么办?解决方法[详细说明]...
  18. 2013-10 阿丹励志笔记(1)
  19. 【算法】遗传算法及其 Java 实现
  20. 疫情使我被迫在家朋友选择躺平,我选择了学习软件测试

热门文章

  1. java封装对象实体类_Java 接口自动化系列--实体类之entity封装
  2. nexus 4 linux,Nexus 4刷机Ubuntu Touch教程
  3. 第一章:点云中的滤波问题---Filters
  4. PCL:超详细的基于法向量和曲率的区域生长算法原理以及源码解读
  5. Python-OpenCV运动物体检测
  6. 图像指针与矩阵格式转换——Mat转uchar*及uchar*转Mat代码实现
  7. java8的jvm优化_基于JDK8 版本的SpringBoot 启动参数优化(建议收藏)
  8. nsis帮助文档_使用NSIS打包程序
  9. 剑指offer:面试题21. 调整数组顺序使奇数位于偶数前面
  10. 几个比较冷门的prototype扩展方法:去掉html标签、去掉a标签、去掉style样式,以及判断是否为html代码的代码片段