当前位置: 首页 > news >正文

C语言sizeof 不是函数吗?

一、问题

        sizeof 怎么⽤,它不是函数吗?

二、解答

        sizeof 在 C 和 C++ 中不是一个函数,而是一个运算符。它在编译时计算其操作数所占用的内存大小,并返回一个大小(字节数),这个结果是类型或表达式的存储大小,不涉及运行时求值。

sizeof 的基本用法

 1、对于基本数据类型

sizeof(int);  // 返回int类型变量占用的字节数

 2、对于变量

int a;
sizeof(a);  // 返回变量a占用的字节数,与sizeof(int)相同

 3、对于数组

char str[] = "Hello";
sizeof(str);  // 返回整个数组str占用的字节数,包含结束符'\0'

 4、对于指针

int* ptr;
sizeof(ptr);  // 返回指针变量ptr的大小,通常是指针在当前平台上的字节数,而不是它所指向
的对象的大小

 5、对于用户自定义类型(如结构体、类、联合体)

struct MyStruct {int a;char b;
};
MyStruct s;
sizeof(s);  // 返回结构体MyStruct实例s占用的总字节数

 6、对于类型别名

typedef double MyDouble;
sizeof(MyDouble);  // 返回double类型的大小

        从上⾯的例⼦可以知道,sizeof 不是函数,它只是关键字,但是⼀般情况下,它将以“sizeof()” 貌似函数的形式出现。

        sizeof 表⽰的是计算对象所占内存空间的⼤⼩。“sizeof0”和函数的形式⼀样,函数名 后⾯跟了⼀对括号,但实际上它只是关键字,并⾮函数。

        另外,需要注意的是,sizeof 在计算变量所占空间⼤⼩时,括号是可以省略的,⽽在 计算类型⼤⼩时,括号则不能省略

三、总结

        总之,sizeof 运算符提供了一种获取对象或类型存储要求的方法,这对于动态分配内存、对齐处理以及理解程序中的内存布局非常有用。

http://www.lryc.cn/news/288771.html

相关文章:

  • Mybatis的XML配置
  • Oracle报错:ORA-08002: sequence CURRVAL is not yet defined in this session
  • python10-Python的字符串之拼接字符串
  • 华为三层交换机之基本操作
  • IntelliJ IDEA 快捷键大全
  • scrapy的概念作用和工作流程
  • 首页热卖推荐商品显示axios异步请求数据动态渲染实现
  • 【C++11并发】mutex 笔记
  • 洛谷 P5635 【CSGRound1】天下第一
  • 如何通过Navicat远程访问宝塔面板安装的MySQL数据库
  • 【硅谷甄选】导航守卫(进度条,网页标题,路由鉴权)
  • OpenHarmony—TypeScript到ArkTS约束说明
  • 蓝桥杯——每日一练(简单题)
  • css设置不可点击
  • fastapi学习
  • 【代码随想录-数组】长度最小的子数组
  • 多表查询练习题
  • SpringBoot之时间数据前端显示格式化
  • Maven讲解
  • Redis2-事务 连接Java 整合springboot 注解缓存
  • CHFS 文件服务器搭建小记
  • vue中图片不显示问题 - vue中静态资源加载
  • IP报文格式
  • k8s 进阶实战笔记 | Pod 创建过程详解
  • 使用MMYOLO中yolov8训练自己VOC数据集实战
  • 解决方案 | 基于SFTP协议的文件传输断点续传Java实现方案
  • web前端项目-动画特效【附源码】
  • 蓝桥杯备战——6.串口通讯
  • Redis为什么速度快:数据结构、存储及IO网络原理总结
  • OSI七层模型 | TCP/IP模型 | 网络和操作系统的联系 | 网络通信的宏观流程