sizeof用法总结

sizeof用法总结

sizeof在C语言中经常遇到,但它的用法和注意事项很多人都没在意过,我通过翻很多人的博客以及自己的理解总结出sizeof常见的用法。 
首先应该澄清sizeof是运算符而不是函数,这就是和strlen()本质的区别了,strlen需要头文件。当然他们的功能表面上也有很多相似的地方,但要看他们的操作原理。 
首先strlen只能针对指针而不能针对类型,通常当对一个数组使用这个函数时,参数传递给strlen就会退化为指针,指针一位位往后移直到遇到'\0'停止('\0'不算),然后将长度返回。 
sizeof则既可以计算类型的长度(sizeof(int))也可计算数组长度,但需要注意的细节是,对数组初始化方式不同sizeof的值可能不同:

int a[] = {'a','b','c','d','e'};
int b[] = "abcde";

上面两种初始化方式看起来一样,其实第一种sizeof值是5,第二种是6.就是以内以数组b的方式初始化编译器会自动在数组后补充'\0',然后计入长度。还有一个细节问题:

int a[20]="0123456789";

上面数组的strlen和sizeof值分别为10,20,因为按上面说的当数组做参数传给strlen时要退化为指针,然后依次往后+1计数直到'\0'为止,因此为10,而sizeof是因为定义数组时已经定义了数组大小,因此它会直接返回20.

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值