C++学习之字符串长度(sizeof()和strlen())

文章讨论了在C语言中sizeof()运算符和strlen()函数的区别。sizeof()返回一个类型或变量所占用的内存字节数,包括结束标志,而strlen()则计算字符串中实际字符的数量,不包含。示例代码展示了在不同情况下sizeof()和strlen()的运用,强调它们在计算字符串长度时的不同行为。
  1. 今天在利用sizeof()和strlen()求解字符串长度的时候遇到了问题,特此记录一下。

  1. 在计算机中,如何字符串都会隐藏一个“\0”作为结束标志。sizeof()是计算操作对象(比如字符数组)的字节数,会统计这个“\0”。strlen()是计算字符串的长度,不会统计这个“\0”。因此strlen()可以统计出字符串的真实长度。

  1. 当给定一个长度字符数组a[10]时,当我们往里面插入数据时,sizeof()统计的是a的长度,即a可以容纳的字符数量。strlen()统计的是a中存在的字符数量。

  1. 代码:


#include <stdio.h>
#include <string.h>

int main()
{
    char buf[10] = {0};
    printf("1.sizof: %d\n",sizeof(buf)); 
    printf("1.strlen : %d\n",strlen(buf)); 
    printf("1.buf : %s\n",buf);
    
    for(int i = 0;i < 3;i++)
    {
        buf[i] = 'a';
    }
    printf("2.sizof: %d\n",sizeof(buf));
    printf("2.strlen : %d\n",strlen(buf)); 
    printf("2.buf : %s\n",buf);
    
    memset(buf,0,sizeof(buf));
    printf("3.menset 0: %d\n",strlen(buf)); 
    printf("3.buf : %s\n",buf);
    return 0;
 } 
  1. 运行结果:

从运行结果中可以看出,初始时a的大小为10,但是内部没有数据,因此,sizeof(a)=10,strlen(a)=0.

当插入3个字符时,因为sizeof()统计的是a的大小,strlen()统计的是a中字符的数量。因此:sizeof(a)=10,strlen(a)=0.

补充:将a中的元素赋值为0时,就删除了此元素,即清空了此位置。size()是计算数据所占的长度,比如一个int 占四个字节,size(int)的结果为4

5.总结:

sizeof()是统计数组的大小,而strlen()是计算数组中元素的数量。

此外,sizeof是关键字,在编译阶段就进行了计算。而strlen是函数,在程序运行时才计算。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值