strlen 和 sizeof 区别
区别
- strlen 是一个库函数,而 sizeof 是一个运算符
- sizeof 计算的是变量或者类型所占用的内存字节数,而 strlen 计算的是字符串中字符的个数
- 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;
}
- 结果
strlen(msg):11 sizeof(mgs):100
strlen(msg_1):11 sizeof(msg_1):12
- 解释
- msg[100], 开辟一个100字节的内存大小空间,存储 11 个字节大小的字符串,所以字符串长度为 11,strlen 结果是 11, sizeof 结果是 100
- msg1[], 开辟一个空间存储字符串,具体大小由编译器计算,所以实际开辟 12 个字节大小的空间,存放 11 个字节长度的字符串,故 strlen 结果是 11,sizeof 结果是 12. 相差的这个一字节,存储的就是 C 风格字符串表示字符串结尾的标识符, '\0'
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了