strlen和sizeof的区别

strlen 和 sizeof 区别

区别

  1. strlen 是一个库函数,而 sizeof 是一个运算符
  2. sizeof 计算的是变量或者类型所占用的内存字节数,而 strlen 计算的是字符串中字符的个数
  3. sizeof 可以用于任何类型的数据,而 strlen 只能计算以 '\0' 结尾的字符串

代码示例

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;

int main()
{
    char msg[100] = "hello world";
    printf("strlen(msg):%zu sizeof(mgs):%lu\n", strlen(msg), sizeof(msg));

    char msg_1[] = "hello world";
    printf("strlen(msg_1):%zu sizeof(msg_1):%lu\n", strlen(msg_1), sizeof(msg_1));

    return 0;

}
  1. 结果
strlen(msg):11 sizeof(mgs):100
strlen(msg_1):11 sizeof(msg_1):12
  1. 解释
  • msg[100], 开辟一个100字节的内存大小空间,存储 11 个字节大小的字符串,所以字符串长度为 11,strlen 结果是 11, sizeof 结果是 100
  • msg1[], 开辟一个空间存储字符串,具体大小由编译器计算,所以实际开辟 12 个字节大小的空间,存放 11 个字节长度的字符串,故 strlen 结果是 11,sizeof 结果是 12. 相差的这个一字节,存储的就是 C 风格字符串表示字符串结尾的标识符, '\0'
posted @   王清河  阅读(18580)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示