sizeof 和 strlen 的区别

简介: `sizeof` 和 `strlen` 是 C 和 C++ 中常用的运算符/函数,功能和用途不同

sizeofstrlen 是 C 和 C++ 编程语言中常用的两个运算符/函数,它们的功能和用途有很大不同:

sizeof

  1. 类型sizeof 是一个运算符。
  2. 用法:用于获取数据类型或变量所占的字节数。
  3. 计算对象:可以用于任何数据类型,包括基本数据类型(如 int, char, float 等)、结构体、数组和指针等。
  4. 编译时计算sizeof 在编译时就计算出结果,因此它的值对编译器是确定的。
  5. 示例
    int a = 10;
    printf("%zu\n", sizeof(a));         // 输出 int 类型所占的字节数
    printf("%zu\n", sizeof(int));        // 输出 int 类型所占的字节数
    char arr[10];
    printf("%zu\n", sizeof(arr));        // 输出数组 arr 占用的字节数
    

strlen

  1. 类型strlen 是一个函数。
  2. 用法:用于计算 C 字符串的长度,即字符串中字符的数量,不包括结束的空字符('\0')。
  3. 计算对象:只能用于类型为 char* 的 C 字符串。
  4. 运行时计算strlen 在运行时计算字符串的长度,所以在程序运行时会遍历字符数组,直到遇到空字符。
  5. 示例
    char str[] = "Hello, World!";
    printf("%zu\n", strlen(str));       // 输出 13,因为字符串中有 13 个字符
    

总结

  • sizeof 用于获取类型或变量占用的内存大小,而 strlen 用于计算 C 字符串的长度(不包括空字符)。
  • sizeof 是编译时运算,而 strlen 是运行时运算。
相关文章
|
9月前
|
自然语言处理
部落冲突脚本,小蜜脚本,赛尔号脚本开源代码
部落冲突模块包含资源自动收集和智能进攻系统,支持自定义兵种投放坐标 赛尔号模块实现精灵自动更换和战斗循环,包含颜色检测战斗状态机制
|
存储 JSON Java
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
这篇文章是关于Elasticsearch的学习指南,包括了解Elasticsearch、版本对应、安装运行Elasticsearch和Kibana、安装head插件和elasticsearch-ik分词器的步骤。
1441 0
elasticsearch学习一:了解 ES,版本之间的对应。安装elasticsearch,kibana,head插件、elasticsearch-ik分词器。
|
关系型数据库 Java 分布式数据库
PolarDB产品使用问题之部署到服务器上的Java应用(以jar包形式运行)无法连接,如何解决
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
人工智能 API 开发工具
「寻找热爱技术创作的你:写下你在技术探中的实践和思考」 零一万物大模型开放平台 第二天零一万物大模型开放平台 第二天 我爱我园
零一万物大模型开放平台支持OpenAI SDK,适配Python 3.7.1+。在解决Python版本不兼容问题(需用Python 3.8.10+)后,安装`openai` SDK,接着配置API基址和密钥,初始化客户端。成功调用`ChatCompletion.create`创建聊天完成例程,输出与预期一致。实现前需在平台注册并验证用户信息,获取API Key。
|
开发框架 前端开发 JavaScript
采用C#.Net +JavaScript 开发的云LIS系统源码 二级医院应用案例有演示
技术架构:Asp.NET CORE 3.1 MVC + SQLserver + Redis等 开发语言:C# 6.0、JavaScript 前端框架:JQuery、EasyUI、Bootstrap 后端框架:MVC、SQLSugar等 数 据 库:SQLserver 2012
233 0
|
小程序 API Android开发
【uniapp】 获取系统信息
【uniapp】 获取系统信息
448 0
|
前端开发 JavaScript 算法
万万没想到,React 优先级队列的实现方式,跟我书里写的一模一样
万万没想到,React 优先级队列的实现方式,跟我书里写的一模一样
377 0
|
数据可视化 Java
Java中的键盘监听机制(含实例)
这里我们使用addKeyListener()来实现添加键盘监听的功能,并且在添加键盘监听时,我们是对整个界面添加的,而不是新建一个按钮后给按钮绑定监听,所以代码会有一点点不同;由于我们不知道addKeyListener()的括号内应该传递什么参数,所以我们就需要来查看源码了,这也是在编写程序中非常重要的技能之一
1535 0
Java中的键盘监听机制(含实例)
|
存储 JSON 定位技术
4.Cesium中实体Entity的增删改查及性能优化(超详细)
Cesium 作为一个功能强大的 WebGL 三维地球仪库,内置了丰富的三维地图展示能力。在 Cesium 中,我们可以通过 Entity(实体)在三维场景中添加和控制各种三维对象,如点、线、面、模型等。本文将介绍 Cesium 中实体的增删改查操作。
4079 0
VUE中父组件传给子组件传值,watch第一次监听不到
VUE中父组件传给子组件传值,watch第一次监听不到