科百科
当前位置: 首页 范文大全

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

时间:2023-07-11 作者: 小编 阅读量: 4 栏目名: 范文大全

很明显这可以采用更合理的方式解决,这便是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取得变量的类型对象,并打印出类型名称。

    推荐阅读
  • 南通五一景区名单(奇妙农场幸福游)

    南通五一景区名单来源:交汇点新闻客户端浓情九九,岁又重阳,10月14日是农历九月初九“重阳节”,幸福街道充分运用辖区内新业态资源,联合奇妙农场举办“情暖重阳礼遇好人幸福传递”主题活动。最后,主办方带领老人们来到火车车厢,制作美味可口的重阳糕。为向老年人宣传反诈防诈和网络安全知识,重阳糕上印有“清网行动”“天下无诈”“举报有奖”等字样。全国党媒信息公共平台提供信息发布传播服务。

  • 苹果手机官网查序列号真伪(苹果官网通过序列号查询iPhone手机真伪)

    有些网友的购买的苹果手机,很多并不是官方指定渠道,如何查询自己的iPhone手机是真是假呢?在官网输入序列号之后,主要通过第三选项“维修和服务保障情况”来判定,显示“消费者权益法可适用”就是国行正版。也可以通过官方软件把iPhone连接电脑直接查看序列号。SIM卡托儿上也有序列号,IMEI码也是可以查询的。较老的机型,机器背面也有序列号。还有那种翻新机,靠序列号查询也是不太靠谱,只能验证真假,但很难保证手机的质量。

  • 教育孩子用红脸白脸策略好吗(教育孩子用红脸白脸策略效果如何)

    教育孩子用红脸白脸策略好吗?下面希望有你要的答案,我们一起来看看吧!那么很容易就会造成孩子对事情认知的一个障碍。其实孩子对于事物的学习,对于事物的认知最初都是来自父母的引导,如果在父母的观念都不能够形成统一的时候,那么孩子对事情的认知肯定也会产生一定的迷惑一定的障碍。这样的话就造成了,我们对于孩子教育的效果会大打折扣,或者说收效甚微。

  • 12生肖经典歇后语(当12生肖遇上歇后语)

    12生肖在春秋时期就出现了,但是你们知道关于12生肖的歇后语你们知道多少呢?,下面我们就来聊聊关于12生肖经典歇后语?接下来我们就一起去了解一下吧!今天小编和大家一起学习关于12生肖的歇后语,你们都听过了吗?瞎虎碰腐肉————无意巧合。马背上打电话——奇闻。欢迎在评论区留言点赞!

  • 关于考试的古诗(关于考试的古诗有哪些)

    关于考试的古诗唐·元稹《自述》延英引对碧衣郎,江砚宣毫各别床。天子下帘亲考试,宫人手里过茶汤。不上楼来知几日,满城无算柳梢黄。未遂风云便,争不恣狂荡。烟花巷陌,依约丹青屏障。唐·张籍《酬朱庆馀》越女新妆出镜心,自知明艳更沉吟。齐纨未是人间贵,一曲菱歌敌万金。唐·孟郊《豋科后》昔日龌龊不足夸,今朝放荡思无涯。九万抟扶排羽翼,十年辛苦涉风尘。唐·常建《落第长安》家园好在尚留秦,耻作明时失路人。

  • 花名大全及花语(花语举例)

    花名大全及花语玉兰花,花语:报恩,真挚、表露爱意、高洁、芬芳、纯洁、纯洁的爱,真挚。吊兰,花语:朴实、天真、淡雅、纯洁、希望、宁静。铃兰,花语:幸福即将到来。葱兰,花语:期待、洁白的爱。君子兰,花语:高贵、宝贵、丰盛、有君子之风。牡丹,花语:圆满、浓情、富贵、雍容华贵。顺利、心想事成、友情、祝福、高贵、百年好合。郁金香,花语:郁金香箴言,走出孤独,自然会邂逅永恒的爱情。爱的表白、荣誉、祝福永恒。

  • 鹅牌羽绒服为啥这么贵(高端羽绒服品牌加拿大鹅Q2营收大涨40)

    DaniReiss在财报电话会议中表示继续看好其品牌在中国市场的发展。今年由于供应链紧张,许多奢侈品牌都面临成本上涨的问题,而据外媒报道,与一些奢侈品同行有所不同,加拿大鹅在加拿大生产其核心产品,这缓解了运输费用飙升对其的影响。二季度财报发布后,加拿大鹅股价大涨19.37%,报收48.26美元/股。

  • 装修里的智商税有哪些(盘点装修容易交)

    装修里的智商税有哪些小东敢说大部分人装修都花了冤枉钱,并且还不自知。

  • 腌制绿辣椒方法(腌制的时候需要用到什么)

    下面内容希望能帮助到你,我们来一起看看吧!腌制绿辣椒方法整个腌制青辣椒时要准备新鲜青辣椒八千克,盐一千克,清水两千克,八角二十克,花椒三十克,生姜二十五克。把准备好的青辣椒用清水洗净去掉表面的水分以后再用干净的牙签在它们的表面上扎一些小眼,扎好以后把青辣椒放到腌辣椒的缸中。

  • 德邦快递被收购吗(99元货到付款快递)

    警方查出,揽件方是河南郑州高新园区德邦快递的营业部,于是赶到当地,抓获卫某、刘某等6名快递员。警方初步核算,该案案值超过1200万元,已查实有5万公民个人信息被泄露。目前,包括这6名快递员在内的13名犯罪嫌疑人,因涉嫌侵犯公民个人信息罪或诈骗罪被刑事拘留。据了解,案件发生后,该快递公司进行了自查,并称将引以为戒,加强监管,避免寄递行业沦为网络犯罪的重灾区。