关于求字符串长度时‘\0‘是否需要数进去

4bbf99fafcd4495c84b12ec472955182.png

 由此代码可知:

1.两种不同的表达所输出的相同字符串长度并不相同

2.在printf函数中%zu与%d有什么区别。

 

解答如下

  1.sizeof和strlen区别如下:

本质:

  strlen是函数,sizeof是运算符。

功能:

  strlen测量的是字符的实际长度,以'\0'结束。

  sizeof测量的是字符的分配大小。

参数:

  strlen只能用char*做参数。

  sizeof可以用类型、函数等做参数。

计算时间:

  strlen的结果要在运行的时候才能计算出来,是用来计算字符串的长度,不是类型占内存的大小。

  而大部分编译程序在编译的时候就把sizeof计算过了,是类型或是变量的长度。

  2.printf函数中%d和%zu的区别

  %d输出int型。
  %zu输出size_t型。

size_t在库中定义为unsigned int。
一个是整型,一个是无符号整型。
补充:如果%zu不能使用,可以用%u取代。%zu不能输出负数。

  3.关于计算字符串长度时是否要➕\0的长度

  一般意义上字符串数组的长度是不包括'\0'的。如char a[]=“China”;这个长度就等于5。其实在系统中a占了6个位置,最后一个放了一个'\0'。

  但是你如果你写char a[]={'C','h','i','n','a'};这个长度也是5,但系统不会在最后放'\0',所以它在系统中只占5个位置。应该说,这个a只能叫“字符数组”,不能叫“字符串数组”。

呢么接下来的一个问题呢:那定义数组a的时候,中括号里面是填写5,还是6啊
答案:
如果是定义字符串数组,要多加一个,如:
char a[6]=“China”;
如果是定义字符数组,可不多加,如:
char a[5]={'c','h','i','n','a'};

但一般都只用一个空的中括号,让系统自行去处理!!!

  • 12
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值