当前位置: 首页 > news >正文

sizeof 与strlen的区别

sizeof  和  strlen  是C和C++ 中用于处理数据大小和字符串长度的两个不同的操作符/函数,它们的区别如下:

 

概念和用途

 

-  sizeof  是一个操作符,用于计算数据类型或变量在内存中所占的字节数,它是在编译时确定的,与数据的实际内容无关,可用于任何数据类型,包括基本数据类型(如  int 、 char  等)、数组、结构体、指针等。

 

-  strlen  是一个函数,用于计算字符串的长度,即字符串中字符的个数,不包括字符串结束符  \0 ,它是在运行时计算的,并且只适用于以  \0  结尾的字符串。

 

参数类型

 

-  sizeof  的操作数可以是数据类型名,也可以是变量名、表达式等。例如, sizeof(int) 、 sizeof(arr) ( arr  为数组)、 sizeof(ptr) ( ptr  为指针)等都是合法的。

 

-  strlen  的参数必须是指向以  \0  结尾的字符串的指针,通常是  char*  类型。例如, strlen("hello") 、 char str[] = "world"; strlen(str);  都是正确的用法。

 

返回值含义

 

-  sizeof  返回的是数据类型或变量在内存中所占的字节数。例如,在32位系统中, sizeof(int)  通常返回4, sizeof(char)  返回1, sizeof(char*)  返回4(指针大小为4字节)。如果是数组, sizeof  返回整个数组的大小,如  char arr[10]; sizeof(arr)  将返回10。

 

-  strlen  返回的是字符串中字符的个数(不包括  \0 )。例如, strlen("hello")  返回5, char str[] = "world"; strlen(str)  也返回5。

 

下面是一个简单的代码示例来演示它们的区别:

 

cpp

#include <iostream>

#include <cstring>

 

int main() {

    int num = 10;

    char str[] = "Hello";

    char* ptr = str;

 

    std::cout << "sizeof(num): " << sizeof(num) << std::endl; // 输出4,int类型在32位系统中占4字节

    std::cout << "strlen(str): " << strlen(str) << std::endl; // 输出5,字符串"Hello"的长度为5

    std::cout << "sizeof(str): " << sizeof(str) << std::endl; // 输出6,包括字符串结束符'\0'共6字节

    std::cout << "sizeof(ptr): " << sizeof(ptr) << std::endl; // 输出4,指针在32位系统中占4字节

    std::cout << "strlen(ptr): " << strlen(ptr) << std::endl; // 输出5,通过指针访问字符串,计算长度为5

 

    return 0;

}

相关文章:

  • 基于规则的自然语言处理
  • 进程与线程的区别
  • 5-C#的DateTime使用
  • 2025.6.8
  • java 时区时间转为UTC
  • 一种停车场自动停车导航器的设计(论文+源码)
  • 31.2linux中Regmap的API驱动icm20608实验(编程)_csdn
  • 【存储基础】对象存储基础知识
  • 动态生成 PV 的机制:使用 NFS-Client Provisione
  • Python训练打卡Day43
  • Angular中Webpack与ngx-build-plus 浅学
  • nodejs环境变量配置
  • Day25 异常处理
  • 力扣HOT100之二分查找:4. 寻找两个正序数组的中位数
  • pymongo配置事务环境并封装事务功能
  • (三)Linux性能优化-CPU-CPU 使用率
  • JDBC基础关键_001_认识
  • DOM(文档对象模型)深度解析
  • Git 常见操作
  • 【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
  • 呼和浩特网站建设公司/长沙网站排名推广
  • 打电话沟通做网站/360seo关键词优化
  • 博客网站怎么做/seo推广优化培训
  • 怎样做自己的 优惠卷网站/智能识别图片
  • 阿里云绑定wordpress/临沂seo建站
  • 大型电商网站建设/上海关键词优化排名软件