C中字符串和字符,strlen和sizeof()

'x' 属于基本类型(char)字符-----------------由一个字符组成('x')

“x”属于派生类型(char数组)字符串-----------由2个字符组成('x'和空字符'\0')





strlen()和sizeof()

#include <stdio.h>
#include <string.h>
#define PRAISE "What a super marvelous name!"
int main(void)
{
    char name[40] = "Morgan";
    printf("strlen = %d\nsizeof = %d\n",strlen(name), sizeof(name));
    printf("strlen = %d\nsizeof = %d",strlen(PRAISE), sizeof(PRAISE));
    return 0;

}

输出结果

strlen = 6
sizeof = 40
strlen = 28
sizeof = 29

根据sizeof报告,name有40个字节,不过根据strlen报告只用了其中前6个单元来存放Morgan,第七个

字节为空字符,它的存在告诉strlen在哪里停止计数

对于 PRAISE ,strlen给出了准确数目(包括空格和标点符号)

sizeof运算结果比strlen的结果大1,这是因为它把结束字符串也算进去了(/0)你并没有定义存储该语句分配多大内存,计算机自己计算出双引号之间的字符数目。

PS:sizeof中是否使用圆括号取决于是获取一个类型还是一个具体量,类型必须用括号sizeof(char),具体量可以sizeof(6.28)或者 sizeof 6.28,一般建议都带括号

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值