侵权投诉

C语言的sizeof操作符基础和经典问题

2020-04-04 17:39 次阅读

sizeof基础

在C语言中,sizeof是一个操作符(operator),而不是函数!其用于判断数据类型或者表达式长度(所占的内存字节数)。其有两种表达形式:

(1)sizeof(类型说明符)

(2)sizeof 表达式

我们通常使用第(1)种形式。

其返回值类型为size_t,在头文件stddef.h中定义。这是一个依赖于编译系统的值,一般定义为:

typedef unsigned int size_t;

首先确定我们当前编译环境中C语言各个基本数据类型在内存中所占字节数,我这里是32bit编译环境:

C语言的sizeof操作符基础和经典问题

我们这里的输出结果为:

C语言的sizeof操作符基础和经典问题

sizeof典型问题

sizeof看起来似乎很简单,那来看看下面这段代码,你能做对几个:

C语言的sizeof操作符基础和经典问题

实际运行 输出结果为:

C语言的sizeof操作符基础和经典问题

简要分析:

(1)sizeof(char) 的值为1。因为char类型数据在内存中占1字节。

(2)sizeof(char*)的值为4。因为char*代表一个指针,在32bit环境中为4字节,也即unsigned int的字节长度。

(3)sizeof('a')的值为4。因为此处‘a’是独立存在的一个字符(没有赋值给其它变量),实际上就是一个整型数,占4个字节,即此处‘a’对应的ascii码的十进制为整数97。但是需要注意的是,若有如下定义:

char ch = 'a';

则此处ch的字节数sizeof(ch)的值为1,而不是4。

(4)sizeof(*s+0)的值为4,因为'h'+0 转化为int,占4字节。此处涉及到类型转换的问题。即不同类型的数据进行运算时,会首先转换成相同数据类型。转换规则为(图片来源于网络):

C语言的sizeof操作符基础和经典问题

(5)sizeof(*s)的值为1,因为此处*s为字符串s的第1个字符‘h’(注意与第三点区分开来,这里是有用char来修饰的),所以所占字节长度为1。

(6)sizeof(s)的值为4,同(2),此处s是一个指针,在32bit环境中为4字节,也即unsigned int的字节长度。

收藏 人收藏
分享:

评论

相关推荐

内存和显存哪个更能影响电脑运行速度

显存,其实就是显卡内存。在计算机电脑中,显存的作用可以说是和硬盘同样重要的,显卡主要就是对一些数据进....
发表于 05-31 10:14 18次 阅读
内存和显存哪个更能影响电脑运行速度

内存的真假如何鉴别

电脑中的内存大小是直接影响到电脑的运行速度和效果,所以很多人在购买电脑的时候都会留意内存大小,购买内....
发表于 05-31 10:11 18次 阅读
内存的真假如何鉴别

单片机C语言软件开发系统Keil C51的使用教程

KEIL C51标准C编译器为8051微控制器的软件开发提供了C语言环境,但是界面是英文的好多初学者....
的头像 Wildesbeast 发表于 05-30 11:01 212次 阅读
单片机C语言软件开发系统Keil C51的使用教程

单片机C语言编程:H文件与.C文件的关系

经过查找资料得知,.H文件就是头文件,估计就是Head的意思吧,这是规范程序结构化设计的需要,既可以....
的头像 张飞实战电子 发表于 05-30 10:42 132次 阅读
单片机C语言编程:H文件与.C文件的关系

请问c语言现在的就业形式如何?

随着网络的推进,各种操作系统及应用程序在嵌入式系统中应用较广,只会C语言就业如何? ...
发表于 05-29 10:19 14次 阅读
请问c语言现在的就业形式如何?

清理手机内存的四个方法

一些手机用户想知道:手机内存怎么清理?在今天的手机教程,我们就给大家介绍一下清理手机内存的4个方法,....
发表于 05-29 10:10 7992次 阅读
清理手机内存的四个方法

内存盘是什么_内存盘的实际应用

内存盘是什么?内存盘是一种虚拟的电脑软件,主要是用于对电脑的数据进行保存的,可以充当电脑的硬盘进行使....
发表于 05-29 10:08 33次 阅读
内存盘是什么_内存盘的实际应用

做的课程设计要求用c语言,大神能给每一行都做一下注释吗?

做的课程设计要求用c语言,但写完后太长,大神能给每一行都做一下注释吗? #include unsigned char ps[]={1,2,3,4,5}; unsigne...
发表于 05-29 08:57 16次 阅读
做的课程设计要求用c语言,大神能给每一行都做一下注释吗?

30个含C语言源码系统仿真实例资料合集免费下载

本文档的主要内容详细介绍的是30个含C语言源码系统仿真实例资料合集免费下载包括了:1、数字电路4线步....
发表于 05-29 08:00 14次 阅读
30个含C语言源码系统仿真实例资料合集免费下载

如何在微信小程序的框架里编程?

如何在微信小程序的框架里编程?用什么语言? 用C语言还是JavaScript还有html5及css? ...
发表于 05-29 03:20 12次 阅读
如何在微信小程序的框架里编程?

51单片机C语言创新教程PDF电子书免费下载

《51单片机c语言创新教程》以宏晶公司的stc89c52rc单片机为蓝本,由浅人深,并结合smart....
发表于 05-28 17:31 57次 阅读
51单片机C语言创新教程PDF电子书免费下载

LCD1602的C语言程序和工程文件免费下载

本文档的主要内容详细介绍的是LCD1602的C语言程序和工程文件免费下载。
发表于 05-28 16:30 30次 阅读
LCD1602的C语言程序和工程文件免费下载

温度数码管的C语言和工程文件免费下载

本文档的主要内容详细介绍的是温度数码管的C语言和工程文件免费下载。
发表于 05-28 16:30 25次 阅读
温度数码管的C语言和工程文件免费下载

内存频率是什么_内存频率高有什么好处

现在的内存频率诸多,如DDR3内存分为1333Hz、1600Hz、2133Hz等频率,而DDR4则分....
发表于 05-28 09:54 125次 阅读
内存频率是什么_内存频率高有什么好处

内存的作用及规格是什么

内存也被称为内储存器,其作用是用于暂时存放处理器中的运算数据,以及与硬盘等外部储存器交换的数据,内存....
发表于 05-28 09:46 38次 阅读
内存的作用及规格是什么

推荐收藏!C语言入门基础知识大全

01C语言程序的结构认识 用一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使小伙伴对c语言有个初步认...
发表于 05-28 09:40 179次 阅读
推荐收藏!C语言入门基础知识大全

使用单片机实现LCD显示电话拨号键盘按键的设计论文免费下载

 电话在人们的日常生活中是比较的常见的电子产品之一,它已进入我们的每一个家庭。本文设计了一款基于单片....
发表于 05-27 08:00 39次 阅读
使用单片机实现LCD显示电话拨号键盘按键的设计论文免费下载

8051单片机C语言软件设计的艺术PDF电子书免费下载

本书主要介绍了8051单片机C语言软件设计的思维与解决方法。本书每一章都是一个精彩的例子,范例说明深....
发表于 05-26 17:32 49次 阅读
8051单片机C语言软件设计的艺术PDF电子书免费下载

C语言常见问题!

C语言常见问题!
发表于 05-26 11:53 112次 阅读
C语言常见问题!

升级电脑内存需要注意什么

很多人玩大型3D游戏的时候,本身标配的8G内存,或许有可能会爆内存,从而导致游戏崩溃。因此对于游戏发....
发表于 05-26 10:57 48次 阅读
升级电脑内存需要注意什么

如何给手机扩展内存

经常会有很多朋友和小编说,手机内存不够了什么的,那么手机内存不够的话应该怎么办呢?不用担心,今天小编....
发表于 05-26 10:55 231次 阅读
如何给手机扩展内存

内存超频的设置方法

内存条做为处理器的“临时仓库”,它的重要性不言而喻,直接影响到电脑速度的快慢。细心的朋友可能会发现,....
发表于 05-26 10:41 90次 阅读
内存超频的设置方法

C语言必背18个经典程序

1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/ #include "stdio.h" main() {int i,j,result; for(i=1;i...
发表于 05-26 09:10 276次 阅读
C语言必背18个经典程序

sql是会编译转换成c语言的数据结构这个bytecode是指?

求大神帮助一哈子,谢谢 我以为sql是会编译,转换成c语言的数据结构,结构体之类的。这个bytecode是指?...
发表于 05-26 04:44 15次 阅读
sql是会编译转换成c语言的数据结构这个bytecode是指?

高级语言程序设计从菜鸟到大师深入C语言程序设计PDF电子书免费下载

本文档的主要内容详细介绍的是高级语言程序设计从菜鸟到大师深入C语言程序设计PDF电子书免费下载。 ....
发表于 05-25 16:21 35次 阅读
高级语言程序设计从菜鸟到大师深入C语言程序设计PDF电子书免费下载

请问C语言中内存地址是否占用存储空间呢?

比如内存地址0028FF1C 这些数字和字母是否需要占用存储空间呢?原因是?...
发表于 05-25 10:14 24次 阅读
请问C语言中内存地址是否占用存储空间呢?

请问c语言阅读赋值语句有什么好习惯吗?

本人c初学者,在c primer plus一书中作者不断强调不能读成xx等于xx,但我每次看到第一眼潜意识里总读成xx等于xx,求教有什么好方...
发表于 05-25 10:14 18次 阅读
请问c语言阅读赋值语句有什么好习惯吗?

低电压内存和普通内存的区别有哪些

在选购笔记本的时候,有的型号会标注为低电压的内存条或者是后缀带有L,那么低电压内存和普通内存的区别有....
发表于 05-25 10:14 78次 阅读
低电压内存和普通内存的区别有哪些

内存套条和单条的区别

同型号的内存条,套装往往要比单条还要贵一些。讲道理来说,同型号同容量同频率的内存条价格应该一样,但是....
发表于 05-25 10:11 67次 阅读
内存套条和单条的区别

手机的处理器和内存哪个更重要

如何选购手机 ?处理器和内存哪个更重要?原则上来讲,手机的每个部件都很重要,都是相辅相成的,离开谁都....
发表于 05-25 09:50 133次 阅读
手机的处理器和内存哪个更重要

C语言中定义int a,a是什么类型?

C语言中定义int a[10][10],a是什么类型? 我的理解是a是指向二维整型数组的指针 ,具体这个怎么用? 一般都处理什么样...
发表于 05-25 07:10 11次 阅读
C语言中定义int a,a是什么类型?

双通道内存的优势

双通道是一种主板和CPU之间的一种内存控制技术,双通道内存在理论上能够提供2倍的内存带宽,有利于一些....
发表于 05-23 10:06 63次 阅读
双通道内存的优势

怎么判断电脑卡是加内存还是加固态硬盘

 如果是日常使用中打开多个软件界面或者是浏览器多页面之间切换出现卡顿,那么将电脑的内存进行升级就十分....
发表于 05-23 10:03 91次 阅读
怎么判断电脑卡是加内存还是加固态硬盘

苹果系统内存占用过大怎么办

由于统计上是将APP【文稿与数据】数据一并与系统大小合在一起,建议清理一下这些软件的数据空间;或者是....
发表于 05-23 10:01 89次 阅读
苹果系统内存占用过大怎么办

电脑和手机的内存不足怎么办

如果是电脑内存不足,可以通过任务管理器关闭部分应用程序,也可以在控制面板中调整虚拟内存的大小,还可以....
发表于 05-22 09:41 98次 阅读
电脑和手机的内存不足怎么办

内存插三条会不会影响双通道?

内存插三条不会影响双通道,双通道只在这两个通道之间互相作用;如果是三根内存,系统会将处于双通道位置的....
发表于 05-22 09:36 113次 阅读
内存插三条会不会影响双通道?

LabVIEW的编程经验教程免费下载

当我开始在键盘上敲打出这句话的时候,我已经使用 LabVIEW 7 年了。7 年的时间,就算天赋平平....
发表于 05-22 08:00 30次 阅读
LabVIEW的编程经验教程免费下载

红外线多功能电子钟的C语言和工程文件免费下载

(1) 进行实时时钟显示功能(达到正点时,自动报时) (2) 时间校准功能 液晶能够显示年月日星期时....
发表于 05-22 08:00 32次 阅读
红外线多功能电子钟的C语言和工程文件免费下载

单片机水塔控制系统的C语言资料免费下载

本文档的主要内容详细介绍的是单片机水塔控制系统的C语言资料免费下载。
发表于 05-21 15:55 52次 阅读
单片机水塔控制系统的C语言资料免费下载

单片机与嵌入式系统的学习课件合集免费下载

本文档的主要内容详细介绍的是单片机与嵌入式系统的学习课件合集免费下载包括了:单片微型计算机概述及预备....
发表于 05-21 08:00 74次 阅读
单片机与嵌入式系统的学习课件合集免费下载

C语言的学习课件资料合集免费下载

C语言是目前世界上最流行和实用的一种计算机高级程序设计语言。最初的C语言只是为描述和实现UNIX操作....
发表于 05-21 08:00 34次 阅读
C语言的学习课件资料合集免费下载

一些基础的C语言程序及其源代码资料合集免费下载

本文档的主要内容详细介绍的是一些基础的C语言程序及其源代码资料合集免费下载。
发表于 05-21 08:00 31次 阅读
一些基础的C语言程序及其源代码资料合集免费下载

C语言编译器PICC9.60破解版应用程序免费下载

本文档的主要内容详细介绍的是C语言编译器PICC9.60破解版应用程序免费下载。
发表于 05-21 08:00 30次 阅读
C语言编译器PICC9.60破解版应用程序免费下载

四元数姿态更新方法公示版C语言版免费下载

本文档的主要内容详细介绍的是四元数姿态更新方法公示版C语言版免费下载。
发表于 05-21 08:00 18次 阅读
四元数姿态更新方法公示版C语言版免费下载

嵌入式入门指导

C语言:嵌入式编程大多用C语言、少量汇编,先学习C语言,汇编用到的时候再上网查询。教材:随便一本C语....
发表于 05-20 10:15 44次 阅读
嵌入式入门指导

手机内存不足的清理方法

很多时候当我们拿起手机时,突然提示我们手机内存不足,无法安装应用,部分功能受影响,手机最近频频提醒内....
发表于 05-20 09:49 687次 阅读
手机内存不足的清理方法

电脑的内存如何清理

我们在日常使用计算机的时候,有的情况下可能会出现在使用一些软件或者是大型游戏的时候出现电脑运行内存不....
发表于 05-20 09:44 372次 阅读
电脑的内存如何清理

显存和内存有什么区别

显存和内存有什么区别?两者有工作对象、存储速度和容量的区别。工作对象方面,显存只为GPU暂存资料,而....
发表于 05-19 10:46 123次 阅读
显存和内存有什么区别

使用C语言在Linux环境下运行推箱子游戏的代码免费下载

本文档的主要内容详细介绍的是使用C语言在Linux环境下运行推箱子游戏的代码免费下载,现在分享给大家....
发表于 05-19 08:00 25次 阅读
使用C语言在Linux环境下运行推箱子游戏的代码免费下载

实现Hello Arduino实验的详细资料说明

一个程序员退休后喜欢书法,有一天,他饭后突然有审美情绪,所以准备“文房四宝”,毛,墨, 纸,研,颇有....
发表于 05-19 08:00 59次 阅读
实现Hello Arduino实验的详细资料说明

单片机的C语言驱动程序资料合集免费下载

本文档的主要内容详细介绍的是单片机的C语言驱动程序资料合集免费下载。
发表于 05-18 08:00 68次 阅读
单片机的C语言驱动程序资料合集免费下载

使用单片机实现广告灯左右移动的设计说明

做单一广告灯的左移右移,硬件电路如图4.4.1所示,八个发光二极管L1-L8分别接在单片机的P1.0....
的头像 Wildesbeast 发表于 05-16 11:49 1063次 阅读
使用单片机实现广告灯左右移动的设计说明

雷神记忆魔人Gaming DDR4 RGB内存评测,满足消费者各项极致需求

本次准备的测试平台是由Intel Core i5-8400处理器+Matrimax B360M-HD....
的头像 牵手一起梦 发表于 05-15 15:12 434次 阅读
雷神记忆魔人Gaming DDR4 RGB内存评测,满足消费者各项极致需求

FORESEE推出采用长鑫存储颗粒的DDR4国产化内存

江波龙嵌入式存储品牌FORESEE推出了3款国产化内存,核心DRAM均采用长鑫存储的颗粒,这标志着中....
发表于 05-15 14:18 591次 阅读
FORESEE推出采用长鑫存储颗粒的DDR4国产化内存

嵌入式C语言的自我修养:这样编出来的代码简直行云流水!

为编写出高质量嵌入式软件,从嵌入式软件安全及可靠性出发,本规范对由于C语言标准、C语言本身、C编译器....
的头像 单片机精讲吴鉴鹰 发表于 05-14 14:43 724次 阅读
嵌入式C语言的自我修养:这样编出来的代码简直行云流水!

如何把C++的源程序改写成C语言

第一种是将C++中的面向对象特征去掉,先全部理解源代码的逻辑,然后改写;第二种是在C中保留面向对象的....
的头像 单片机精讲吴鉴鹰 发表于 05-14 10:08 360次 阅读
如何把C++的源程序改写成C语言

Java线上故障排查必备指南完整版合集免费下载

线上故障主要会包括 CPU、磁盘、内存以及网络问题,而大多数故障可能会包含不止一个层面的问题,所以进....
发表于 05-14 08:00 43次 阅读
Java线上故障排查必备指南完整版合集免费下载

超声波测距数码管显示的C语言程序免费下载

  本文档的主要内容详细介绍的是超声波测距数码管显示的C语言程序免费下载。
发表于 05-13 17:32 54次 阅读
超声波测距数码管显示的C语言程序免费下载

单片机C语言程序设计实训100例包含Keil程序和仿真电路图的资料合集

本文档的主要内容详细介绍的是单片机C语言程序设计实训100例包含Keil程序和仿真电路图的资料合集包....
发表于 05-13 08:00 84次 阅读
单片机C语言程序设计实训100例包含Keil程序和仿真电路图的资料合集

单片机C语言程序设计实训100例的程序和电路图合集

本文档的主要内容详细介绍的是单片机C语言程序设计实训100例的程序和电路图合集包括了:基础程序设计,....
发表于 05-12 08:00 97次 阅读
单片机C语言程序设计实训100例的程序和电路图合集