公司法
当前位置: 首页 法律大全

c语言sizeof运算符主要用于(C语言快速入门初识sizeof运算符)

时间:2023-07-11 作者: 小编 阅读量: 1 栏目名: 法律大全

很明显这可以采用更合理的方式解决,这便是sizeof。这可以通过使用sizeof运算符来测量。这里有两点需要注意:sizeof是运算符而不是函数。不管传递给sizeof是的变量还是类型,最终计算的是类型占据的大小。因此我们将一个数组对象传递给sizeof运算符,它便会计算出整个数组元素所占用的字节数。以测试数组中的例子而言,sizeof遇到a之后,它知道a是一个含有9个int型数据的数组,c则是一个含有8个字符的char型数组。

在上节内容中,我们使用符号常量解决了数组元素个数可维护性的额外负担。然而数组有一种不指定元素个数的形态,通常是用于有固定元素个数的数据,这种情况下很少为其单独定义符号常量。如果要用循环遍历数组或非要为其定义符号常量,那可以通过数数的方式来进行。

假定你采取了数数的方式,一旦增加或减少数组元素个数,与该数组有关的流程就存在发生BUG的可能性。很明显这可以采用更合理的方式解决,这便是sizeof。

sizeof运算符

在C语言中,一个char类型的变量占用一个字节的存储空间,那int类型与float类型呢?这可以通过使用sizeof运算符来测量。

使用sizeof运算符时,需要提供变量或类型参数(如果是表达式,则按表达式结果的类型计算),返回该变量或类型以byte为单位所占用的空间大小。

  • 如果是实参是类型,那么sizeof得到的结果是此类型的大小;
  • 如是实参是变量,那么sizeof得到的结果是此变量的类型的大小,这个值永远会比0大。

这里有两点需要注意:

  1. sizeof是运算符而不是函数。
  2. 不管传递给sizeof是的变量还是类型,最终计算的是类型占据的大小。

因此测试一个int类型变量的大小与测试int类型自身得到的结果是一致的,这里的程序显示了在32位环境下,我们学习的已知变量类型的大小。

测试数组

关于sizeof需要牢记的便是:不管传递给sizeof是的变量还是类型,最终计算的是类型占据的大小。因此我们将一个数组对象传递给sizeof运算符,它便会计算出整个数组元素所占用的字节数。

根据第一个程序的结果我们知道sizeof(int)=4,那么这里sizeof(a)=4(字节)*9(元素)=36个字节。同样sizeof(c)=8。知道了数组对象的总大小,除以元素的类型,便是数组元素的个数,下面是程序运行结果。

需要注意在计算数组a的元素个数时,我们采用的表达式为:sizeof(a)/sizeof(int);而数组c则采用的是传递变量的形式sizeof(c)/sizeof(c[0])。使用第二种方式的优势在于,当你改变数组类型时,则不必改变求值表达式。假设采用方式一,你现在将数组a由int型改为float型,那表达式需要相应的更改为:sizeof(a)/sizeof(float)。

抢答送分题

思考一下:在表达式sizeof(c)/sizeof(c[0])中,为什么使用数组的第一个元素,而不是其它元素,使用其它元素行吗?

只要你使用的元素没有越界,那么使用数组哪个元素都是可行的。之所以使用0号元素,因为数组也存在只有一个元素的情况,如果你使用sizeof(c[1]),就会在不经意间造成越界访问。之所以能够使用任何一个未越界的元素,另一个深层的原因是:数组是存放同一类型数据的集合,这在数组的特性中提到过,并且sizeof最终计算的是类型占据的大小,sizeof(c[0])与sizeof(c[5])都是测试sizeof(char)类型占用的空间。

确认数组类型

再次重申一下,不管传递给sizeof是的变量还是类型,最终计算的是类型占据的大小

以测试数组中的例子而言,sizeof遇到a之后,它知道a是一个含有9个int型数据的数组,c则是一个含有8个字符的char型数组。sizeof(a)事实上相当于测试sizeof(int[9]),sizeof(c)就是sizeof(char[8]),所以a的类型是int[9], c的类型是char[9]。你可以把下列代码加入到程序中,会发现这两种类型占用的存储空间与我们程序表述的一致。

当然,如果使用C,我们可以很轻松的看到数据的真实类型。下列程序使用typeid取得变量的类型对象,并打印出类型名称。

    推荐阅读
  • 怎样烧红烧肉(家常红烧肉的做法)

    怎样烧红烧肉原料:精品五花肉、炖肉料包、葱、冰糖、茶叶。五花肉切条放入凉水中撇去血沫。焯水定型;捞出后晾凉切一样大的方块。锅中放少许油倒入白砂糖炒糖色。糖色的气泡由大变小迅速关火,倒入开水。加少许绍酒,加开水烧,熟得快,加入茶叶水,可以去腥味。改回炒锅大火,放冰糖,使汁粘稠即可出锅,香葱段点缀。

  • 2022杭州径山茶圣节时间、地点、活动一览

    最终集齐所有铜币的游客可至“大宋钱庄”兑换神秘礼物。今来茶韵生活01、陆羽说论坛为进一步挖掘径山茶宴有关历史文化,本届茶圣节特邀请茶学专家交流讨论如何更好保护和传承国家非物质文化遗产。为打造文化传播年,第二十一届中国茶圣节以春迎、夏凉、秋韵、冬福四大主题贯穿全年。

  • 《重生之门》给罗队发短信的人身份

    但是通过前文,不难推测应该是庄文杰发给罗队的短信,只是没有暴露自己的身份。罗坚来到青檀假日酒店排查,没有发现任何异常,庄文杰和许正清乔装改扮随后赶来,他们一出现就被人盯上,庄文杰和许正清来到地下停车场,庄文杰巧妙引开那些人,混进游客中进入酒店。这件事情把十二年前的洛神案串联起来了。

  • 爱情名著哪个好看(随侃名著佳作第6期)

    言下之意,他主动向周晓白提出分手。钟跃民成为一个军人,上了战场,并且是在战斗中受伤,被送到战地医疗帐篷内救治。而周晓白和钟跃民在时隔十多年后的相遇一刻,也是被编剧以及导演,安排得相当的特别,并不是那种悲情欲绝又或者是感动无比的相遇时刻。

  • 板栗可以保存多久 板栗怎么能保存时间长

    如果是晒干的板栗可以存放3-4个月,生板栗在常温下合理贮存可以存放1-2个月,煮熟的栗子大概可以放一周,熟板栗放冰箱冷冻能保存30天左右,熟板栗放冰箱冷藏保存可以存放5天。

  • 贾宝玉与红楼梦的关系(贾宝玉的春梦到底在暗示什么)

    贾宝玉与红楼梦的关系?要知道,贾琏这个人极其好色,而且好的就是熟女,那么从这个曲折的描述中,我们可以推断出,秦可卿应该是那种熟女中的极品。这个问题在书中得不到直接的答案,因为在后面的文章中,秦可卿一共只出现三个镜头:介绍弟弟秦钟与贾宝玉相见,秦可卿病后王熙凤带贾宝玉去探病,秦可卿临死前在梦里向王熙凤交代后事。

  • 简单又好看的剪纸适合儿童(孩子能学会的幼儿简单剪纸教程)

    接下来我们就一起去研究一下吧!简单又好看的剪纸适合儿童幼儿园的孩子经常要做各种各样的手工,通过做手工,提高孩子的审美能力,锻炼孩子的动手能力,培养孩子的专注力和耐心,让孩子更聪明。用蓝天白云绿色的草地,太阳、小兔子和小蘑菇,可以贴出一幅画,也可以用这个画面编出一个小故事,带孩子度过愉快的亲子时光。欢迎关注,学习更多幼儿小手工。

  • 摩尔庄园钓鲤鱼的最佳方法(摩尔庄园钓鲤鱼的有什么最佳方法)

    以下内容希望对你有帮助!摩尔庄园钓鲤鱼的最佳方法工具/原料:华为手机、安卓系统、摩尔庄园游戏。进入游戏后操纵游戏角色进行移动了。去商店购买钓鱼的诱饵。来到池塘边进行的钓鱼。等待的水面出现波动即可钓到鲤鱼了。

  • 国外的懒人产品(歪国产品咖在用哪些可爱的小工具)

    quotes=trueUsabilityHub我通常使用UsabilityHub来帮助确定设计方案。

  • 一年四季水果时间表(一年四季的时令水果是什么)

    3月(春季):枇杷、红香蕉、樱桃、杨桃、番荔枝、青枣、甘果蔗、草莓、番石榴、牛奶蕉、柑桔、观赏南瓜、果桑、鹤首瓜。12月(冬季):樱桃、番茄、红香蕉、鸡蛋果、木瓜、草莓、百香果、杨桃、无花果、番石榴、牛奶蕉、鹤首瓜、观赏南瓜、果蔗、台湾青枣、黑提子、人心果、柠檬、菠萝、油梨、柑橘、橙子。