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

本文深入探讨了C语言中strlen和sizeof函数的区别与联系。通过具体的代码示例,展示了这两个函数如何处理字符数组和字符串,解释了它们在计算长度时的不同之处。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

'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,一般建议都带括号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值