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

sizeof()和strlen

一、什么是sizeof()

sizeof()是一个在C和C++中广泛使用的操作符,用于计算数据类型或变量所占内存的字节数。它返回一个size_t类型的值,表示其操作数所占的字节数。

在使用时,sizeof()可以接收一个数据类型作为参数,也可以接收一个具体的变量或表达式作为参数。对于数据类型,sizeof()返回该数据类型所占的字节数;对于变量或表达式,sizeof()返回其类型所占的字节数。

以下是sizeof()的使用示例:

sizeof(int); // 返回 int 类型所占据的字节数
sizeof(double); // 返回 double 类型所占据的字节数
sizeof(char); // 返回 char 类型所占据的字节数
sizeof(float); // 返回 float 类型所占据的字节数int arr[10];
sizeof(arr); // 返回整型数组 arr 所占据的总字节数,通常是数组长度乘以每个元素的字节数sizeof(char*); // 返回指针变量所占据的字节数,通常是编译器架构下的指针大小

在计算数组的大小时,sizeof()操作符会返回整个数组占据的总字节数,因此它经常用于确定数组在内存中的存储空间。同时,sizeof()在动态内存分配中也很有用,因为它可以帮助确定所需内存块的大小。

需要注意的是,sizeof()是一个编译时求值的操作符,在程序运行时并不会执行计算,而是在编译阶段就确定了结果。

二、什么是strlen 

strlen是一个用于计算字符串长度的C标准库函数,它返回一个size_t类型的值,表示输入字符串中非空字符的数量,不包括字符串结尾的空字符'\0'。

在使用时,strlen函数接收一个以空字符为结尾的字符串作为参数,并计算这个字符串中字符的数量,知道遇到字符串结尾的空字符为止。

以下是strlen的使用示例:

#include<string.h>//使用strlen库函数需要用到的头文件
int main()
{char str[] = "Hello World!";size_t strlength = strlen(str);printf("The length of the string is:%zu\n", strlength);//%zu是C语言中用来格式化size_t类型变量的格式符号return 0;
}

需要注意的是, strlen函数只能用于以空字符结尾的字符串,如果输入的不是一个以空字符为结尾的字符串,其行为是未定义的,可能会导致意外的结果。

 三、sizeof()和strlen的区别

sizeof()是操作符,计算操作数所占内存大小,单位是字节,关注的是数据的类型。

strlen是库函数,用来计算字符串的长度,统计的是空字符前字符的个数,如果没有空字符,可能会越界访问。

更多C语言相关练习请访问:test_c: C语言练习,包括常见语法练习以及小项目练习。 (gitee.com)

http://www.lryc.cn/news/338338.html

相关文章:

  • Python学习笔记13 - 元组
  • [leetcode]remove-duplicates-from-sorted-list-ii
  • 共享内存和Pytorch中的Dataloader结合
  • 分享 WebStorm 2024 激活的方案,支持JetBrains全家桶
  • Android OOM问题定位、内存优化
  • 棋盘(c++题解)
  • 滑动窗口例题
  • 智过网:注册安全工程师注册有效期与周期解析
  • 腐蚀Rust 服务端搭建架设个人社区服务器Windows教程
  • 蓝桥杯备赛:考前注意事项
  • 111111111111
  • uniapp 卡片勾选
  • 乐趣Python——文件与数据:挥别乱糟糟的桌面
  • docker nginx-lua发送post json 请求
  • 阿里面试总结 一
  • 多线程(49)定义无锁、阻塞、非阻塞和无等待算法
  • (一)ffmpeg 入门基础知识
  • 【软件测试】个人博客系统测试
  • 20240410解决OK3588-C的核心板刷机之后无法启动的问题
  • 仅需三步就能成为大语言模型Prompt Engineer提示词工程大神
  • RuleEngine规则引擎底层改造AviatorScript 之公式规则
  • Vue项目(H5)与微信小程序来回跳转
  • 设计模式-单一职责原则
  • vue和nunjucks的变量插值的形式{{}}冲突
  • 多语言婚恋交友APP开发流程一览
  • RUM 最佳实践-交互延迟的探索与发现
  • spring boot 集成 flyway依赖 做数据库迁移,让部署没烦恼
  • TCP协议--传输机制
  • 句柄ros::NodeHandle nh(“~“)与nh对launch文件参数配置(param)的影响
  • C++_List的学习