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

sizeof和strlen的对比

在这里插入图片描述

文章目录

  • 🚩前言
  • 🚩sizeof
  • 🚩strlen
  • 🚩sizeof和strlen对比

🚩前言

很多小白在学习中,经常将sizeof和strlen弄混了。本篇文章,小编讲解一下sizeof和strlen的区别。🤷‍♂️

请添加图片描述

🚩sizeof

size_t 其实专门是设计给sizeof的,表示sizeof的返回值类型

sizeof计算变量所占内存空间大小,单位是字节

如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。

sizeof 只关注占⽤内存空间的⼤⼩,不在乎内存中存放什么数据。

代码演示:

#include<stdio.h>int main()
{int a = 10;printf("%d\n", sizeof(a));printf("%d\n", sizeof a);printf("%d\n", sizeof(int));return 0;
}

运行结果:

4
4
4

sizeof 在计算大小的时候,其实是根据类型推算的

sizeof的操作数如果是一个表达式,表达式的不参与计算的!!!

#include<stdio.h>int main()
{short s = 10;//占2个字节int i = 2;   //占4个字节int n = sizeof(s = i + 4);//截断printf("%d\n", n);//2printf("%d\n", s);// 10return 0;
}

🚩strlen

功能:

求字符串长度

原型:

size_t strlen ( const char * str );

统计的是从 strlen 函数的参数 str 中这个地址开始向后, \0 之前字符串中字符的个数。

strlen 函数会⼀直向后找 \0 字符,直到找到为⽌,所以可能存在越界查找。

代码演示:

#include<stdio.h>int main()
{char arr1[3] = { 'a', 'b', 'c' };char arr2[] = "abc";printf("%d\n", strlen(arr1));printf("%d\n", strlen(arr2));printf("%d\n", sizeof(arr1));printf("%d\n", sizeof(arr1));return 0;
}

🚩sizeof和strlen对比

sizeof

  1. sizeof是操作符
  2. sizeof计算操作数所占内
    存的⼤⼩,单位是字节
  3. 不关注内存中存放什么数

strlen

  1. strlen是库函数,使⽤需要包含头⽂件 string.h
  2. srtlen是求字符串⻓度的,统计的是 \0 之前字符的隔个数
  3. 关注内存中是否有 \0 ,如果没有 \0 ,就会持续往后找,可能
    会越界

在这里插入图片描述

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

相关文章:

  • Flutter系列文章-Flutter 插件开发
  • 基于SpringBoot实现MySQL与Redis的数据最终一致性
  • mysql与oracle数据库备份
  • UE4 材质学习笔记
  • TiDB 源码编译之 TiProxy 篇
  • 利用驱动漏洞
  • 开始MySQL之路——MySQL约束概述详解
  • CMake基础和命令介绍
  • 【matlab利用shp文件制作mask白化文件】
  • 【LLM】解析pdf文档生成摘要
  • 方案:AI边缘计算智慧工地解决方案
  • 【Python】【数据结构和算法】查找最大或最小的N个元素
  • C++day1(笔记整理)
  • 关于chromedriver.exe一系列问题的解决办法
  • css-选择器、常见样式、标签分类
  • 三星申请新商标:未来将应用于智能戒指,作为XR头显延伸设备
  • 0201hdfs集群部署-hadoop-大数据学习
  • DevOps中的持续测试优势和工具
  • 函数-C语言(初阶)
  • elementuiplus设置scroll-to-error之后 提示被遮挡的解决方案
  • vue中将新添加的div标签自动定位到可视区域内
  • Vue3笔记——(尚硅谷张天禹Vue笔记)
  • 正则表达式一小时学完
  • 上门服务系统|上门服务小程序如何提升生活质量?
  • 系统报错msvcp120.dll丢失的解决方法,常见的三种解决方法
  • 数据库备份工具有哪些
  • Sentinel流量控制与熔断降级
  • The Connector 周刊#10:你真的知道什么是DevOps文化吗?
  • leetcode438. 找到字符串中所有字母异位词(java)
  • 【锐捷】OSPF 多区域配置