sizeof你真的弄明白了吗?来看看这个例子
sizeof基础
sizeof是一个操作符(operator),而不是函数!
其用于判断数据类型或者表达式长度(所占的内存字节数)。其有两种表达形式:
(1)sizeof(类型说明符)(2)sizeof 表达式
stddef.h
中定义。这是一个依赖于编译系统的值,一般定义为:
typedef unsigned int size_t;
int main(void)
{
printf("sizeof(char) = %u\n", sizeof(char));
printf("sizeof(short) = %u\n", sizeof(short));
printf("sizeof(int) = %u\n", sizeof(int));
printf("sizeof(long) = %u\n", sizeof(long));
printf("sizeof(float) = %u\n", sizeof(float));
printf("sizeof(double)= %u\n", sizeof(double));
return 0;
}
sizeof典型问题
int main(void)
{
char *s = "hello";
printf("sizeof(char) = %u\n", sizeof(char));
printf("sizeof(char*)= %u\n", sizeof(char*));
printf("sizeof('a') = %u\n", sizeof('a'));
printf("sizeof(*s+0) = %u\n", sizeof(*s+0));
printf("sizeof(*s) = %u\n", sizeof(*s));
printf("sizeof(s) = %u\n", sizeof(s));
return 0;
}
sizeof(char)
的值为1。因为char类型数据在内存中占1字节。
sizeof(char*)
的值为4。因为char*代表一个指针,在32bit环境中为4字节,也即unsigned int的字节长度。
sizeof('a')
的值为4。因为此处‘a’是独立存在的一个字符(没有赋值给其它变量),实际上就是一个整型数,占4个字节,即此处‘a’对应的ascii码的十进制为整数97。(貌似解释得有些牵强,但事实就是这样)但是需要注意的是,若有如下定义:
char ch = 'a';
sizeof(*s+0)
的值为4,因为'h'+0 转化为int,占4字节。此处涉及到类型转换的问题。即不同类型的数据进行运算时,会首先转换成相同数据类型。转换规则为(图片来源于网络):
sizeof(*s)
的值为1,因为此处*s为字符串s的第1个字符‘h’(注意与第三点区分开来,这里是有用char来修饰的),所以所占字节长度为1。
sizeof(s)
的值为4,同(2),此处s是一个指针,在32bit环境中为4字节,也即unsigned int的字节长度。
往期好文合集
在公众号内回复「更多资源」,即可免费获取,期待你的关注~
长按识别图中二维码关注
sizeof你真的弄明白了吗?来看看这个例子相关推荐
- c语言sizeof char,sizeof 你真的弄明白了吗?来看看这个例子
原标题:sizeof 你真的弄明白了吗?来看看这个例子 sizeof基础 在C语言中,sizeof是一个操作符(operator),而不是函数!其用于判断数据类型或者表达式长度(所占的内存字节数).其 ...
- sizeof你真的弄明白了吗?
sizeof基础 在C语言中,sizeof是一个操作符(operator),而不是函数!其用于判断数据类型或者表达式长度(所占的内存字节数).其有两种表达形式: (1)sizeof(类型说明符) (2 ...
- 你真的弄明白了吗?Java并发之AQS详解
你真的弄明白了吗?Java并发之AQS详解 带着问题阅读 1.什么是AQS,它有什么作用,核心思想是什么 2.AQS中的独占锁和共享锁原理是什么,AQS提供的锁机制是公平锁还是非公平锁 3.AQS在J ...
- java中new与newitance_你真的弄明白 new 了吗
好久没有写点东西了,总觉得自己应该写点牛逼的,却又不知道如何下笔.既然如此,还是回归最基本的吧,今天就来说一说这个new.关于javascript的new关键字的内容上网搜一搜还真不少,大家都说new ...
- mysql编码问题——charset=utf8你真的弄明白了吗?
导读:以前学习mysql的时候,一直不知道"charset=utf8"是什么意思,更不知道"set names gbk"是什么意思,通过这篇文章将会给大家详细介 ...
- 对于神经网络,硕博士不需要弄明白原理,只需要应用,是这样吗?
链接:https://www.zhihu.com/question/433274875 编辑:深度学习与计算机视觉 声明:仅做学术分享,侵删 作者:匿名用户 https://www.zhihu.com ...
- 想做程序员?弄明白这些问题,你会少走很多弯路
前言 几乎每一个新手程序员都会走上那么一段自学的道路,尤其是在校生或进入工作岗位之后,技术的提升基本都靠自学,有的虽然是网上报班学习,但更多时候还是自己在学习,师傅引进门,修行靠个人. 有的人自学很快 ...
- 无处 不在的无线智能——6g 的关键驱动与研究挑战_三星电子发布6G白皮书 网友:先把5G弄明白...
(记者 陈洲)据韩联社报道,三星电子14日发布题为<下一代超连接体验>的6G白皮书,阐述6G愿景.白皮书中提到,第六代移动通信技术将实现T级(tera bps级)数据传输速率,无线网络延迟 ...
- 3分钟弄明白JAVA三大修饰符
3分钟弄明白JAVA三大修饰符 JAVA的三个修饰:static,final,abstract,在JAVA语言里无处不在,但是它们都能修饰什么组件,修饰组件的含义又有什么限制,总是混淆.所以来总结对比 ...
最新文章
- 【C 语言】字符串拷贝 ( 指针使用前判空 | while 空语句 )
- 第一次安装Intellij IDEA过程中遇到的坑
- 计算机组成原理实验七,计算机组成原理实验七.doc
- pb string最大长度_跑马备赛训练计划大盘点,助你跑出PB
- php将从数据库取出的数据分为6个一组的二维数组
- [MySQL]经常无故崩溃amd.dll , boot1.exe病毒
- IBM将剥离传统IT基础设施部门;迅雷前CEO陈磊涉嫌职务侵占罪被调查 ;Python 3.9发布|极客头条
- MessageBox函数
- uploadify php demo,uploadify HTML5 版本,多图上传
- 啥叫全国统一大市场?
- wordpress批量导入html文章,wordpress文章采集发布批量上传教程(火车头)
- windy定义了一种windy数,不含前导零且前两个数字只差至少为2的正整数被称为windy数,求A和B之间windy数的个数
- html中加hover啥意思,css中hover是什么意思
- MDK 5.25 J-link V9 烧写程序失败
- golang实现iris框架最小功能的mvc
- 个性注释,让你的代码飞起来
- UVM中的TLM机制
- 高数-导数--隐函数求导
- 计算机思维与音乐关系,浅谈音乐与思维的联系.PDF
- Minecraft开服教程
热门文章
- how is SAP ui5 formatter resolved
- nodejs应用部署到SAP云平台的经过
- 在Corporate Network里配置SAP Cloud Connector连接SAP云平台,需要设置代理
- language dropdown list - filter logic
- when is IBASE status changed from inital to created - not answered
- Navigation execution entry point
- SAP Hybris Accelerator的安装和使用方式
- 网易纯净邮箱5元一个月,有点贵啊
- 一次SAP客户访谈记录
- 【信息系统项目管理师】常用网络标准与网络协议