语法

sizeof有三种语法形式:

1、sizeof(object); //sizeof(对象);

2、sizeof(type_name); //sizeof(类型);

3、sizeof object; //sizeof 对象;

一、基本数据类型的sizeof

等于各数据类型在内存中所占的字节数。这里的基本数据类型指的是short、int、long、float等简单的内置数据类型,由于它们和系统相关,所以取值在不同系统下可能会不同,可移植性较差。

如:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int a = sizeof(char);
  5. int b = sizeof(short);
  6. int c = sizeof(int);
  7. int d = sizeof(long);
  8. printf("char 长度是 %d 个字节 \n", a);
  9. printf("short 长度是 %d 个字节 \n", b);
  10. printf("int 长度是 %d 个字节 \n", c);
  11. printf("long 长度是 %d 个字节 \n", d);
  12. return 0;
  13. }

运行结果为:

  1. 13:55:58 > char 长度是 1 个字节
  2. 13:55:58 > short 长度是 2 个字节
  3. 13:55:58 > int 长度是 4 个字节
  4. 13:55:58 > long 长度是 4 个字节

二、指针变量的sizeof

等于计算机内部地址总线的宽度。所以在32位计算机中,一个指针变量的返回值必定是4(注意结果是以字节为单位)。

指针变量的sizeof值与指着所指的对象没有任何关系。

三、数组的sizeof

数组的sizeof值等于数组所占用的内存字节数,如:

  1. char a1[] = "abc";
  2.   int a2[3];
  3.   sizeof( a1 ); // 结果为4,字符 末尾还存在一个NULL终止符
  4.   sizeof( a2 ); // 结果为3*4=12(依赖于int,int4个字节)
  5.   //sizeof当作了求数组元素的个数是不对的,求数组元素的个数写法为:
  6. // 总长度/单个元素的长度
  7.   int c2 = sizeof( a1 ) / sizeof( a1[0] ); // 总长度/第一个元素的长度.注意数组名做函数参数传递时退化为指针。

四、结构体的sizeof

  1. struct S1{
  2. char c;
  3. int i;
  4. };

sizeof的结果等于对象或者类型所占的内存字节数。

声明:本文参考转载自C语言中sizeof的用法 (oh100.com)

C语言中sizeof()的用法的更多相关文章

  1. C语言中sizeof的用法

    今天同学问我sizeof可不可以计算结构体的大小,我竟然忘了C语言还有sizeof这个函数,我是多久没有写程序了啊!!!惭愧,上研究生后写嵌入式方面的程序就特别少了,看来以后还要经常来练练手才行.现在 ...

  2. C语言中qsort函数用法

    C语言中qsort函数用法-示例分析    本文实例汇总介绍了C语言中qsort函数用法,包括针对各种数据类型参数的排序,非常具有实用价值非常具有实用价值. 分享给大家供大家参考.C语言中的qsort ...

  3. 对C语言中sizeof细节的三点分析

    转自对C语言中sizeof细节的三点分析 1.sizeof是运算符,跟加减乘除的性质其实是一样的,在编译的时候进行执行,而不是在运行时才执行. 那么如果编程中验证这一点呢?ps:这是前两天朋友淘宝面试 ...

  4. C语言中 malloc函数用法

    一.malloc()和free()的基本概念以及基本用法: 1.函数原型及说明: void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存的指针 ...

  5. C/C++语言中const的用法

    1. const 在C和C++中的区别     C++中的const正常情况下是看成编译期的常量,编译器并不为const分配空间,只是在编译的时候将期值保存在名字表中,并在适当的时候折合在代码中. 所 ...

  6. 在不同语言中static的用法

    static (计算机高级语言) 编辑 像在VB,C#,C,C++,Java,PHP中我们可以看到static作为关键字和函数出现,在其他的高级计算机语言如FORTRAN.ALGOL.COBOL.BA ...

  7. 浅析C语言中assert的用法(转)

    原文地址:http://www.jb51.net/article/39685.htm 以下是对C语言中assert的使用方法进行了介绍,需要的朋友可以参考下. assert宏的原型定义在<ass ...

  8. C语言中extern的用法--转

    http://blog.sina.com.cn/s/blog_52deb9d50100ml6y.html 在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的, ...

  9. C语言中#define的用法(转)

    转自:http://www.dingge.com/main/article.asp?id=10 今天整理了一些#define的用法,与大家共享! 1.简单的define定义 #define MAXTI ...

随机推荐

  1. 【记录一个问题】go.mod中使用replace后,编译出现神奇的错误:

    biz\child.go:5:2: imported and not used: "xxx.com/start/common/src/polaris" as biz biz\chi ...

  2. Cesium入门6 - Adding Imagery - 添加图层

    Cesium入门6 - Adding Imagery - 添加图层 Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com ...

  3. Postman 支持 gRPC 了!继续领先 ~

    最近国产API管理工具比较热,几款产品在API管理层面做得也都还不错,但主要还是对HTTP相关的API管理,毕竟这类API的应用目前还是最为广泛的.但显然,还有不少其他应用场景目前没有覆盖到,DD在之 ...

  4. Filter+Redis解决项目之间调用的幂等性

    幂等(idempotent.idempotence)是一个数学与计算机学概念,常见于抽象代数中. 在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同 在项目远程调用中,如果接 ...

  5. 计算机开放电子书 2021 RC2

    下载方式 pip install CDNDrive # 或 # pip install git+https://github.com/apachecn/CDNDrive cdrive download ...

  6. java - HashMap原理及实现 (转)

    众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry.这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干. HashMap ...

  7. TestNG--@Factory

    原文地址:http://blog.csdn.net/wanghantong TestNg的@Factory注解从字面意思上来讲就是采用工厂的方法来创建测试数据并配合完成测试 其主要应对的场景是:对于某 ...

  8. epoll反应堆模型实现

    epoll反应堆模型demo实现 在高并发TCP请求中,为了实现资源的节省,效率的提升,Epoll逐渐替代了之前的select和poll,它在用户层上规避了忙轮询这种效率不高的监听方式,epoll的时 ...

  9. 稳过!华为微认证ModelArts实现智能花卉识别稳过!

    华为微认证ModelArts实现智能花卉识别稳过! 目录 华为微认证ModelArts实现智能花卉识别稳过! ModelArts实现智能花卉识别的概述 ModelArts实现智能花卉识别的解决方案 M ...

  10. linux 定时删除图以及crontab介绍

    执行 sudo crontab -e 0 3 1 * * /etc/letsencrypt/certbot-auto renew --renew-hook "sudo nginx -s re ...