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

【C语言入门级教学】sizeof和strlen的对⽐

1.sizeof和strlen的对⽐

1.1 sizeof

sizeof 计算变量所占内存空间⼤⼩的,单位是字节,如果操作数是类型的话,计算的是使⽤类型创建的变量所占内存空间的⼤⼩。 sizeof 只关注占⽤内存空间的⼤⼩,不在乎内存中存放什么数据。 ⽐如:

#inculde <stdio.h>  
int main() 
{ int a = 10; printf("%d\n", sizeof(a)); printf("%d\n", sizeof a);//表达式可不带括号 printf("%d\n", sizeof(int));  return 0; 
}

易错题

#include <stdio.h>
int main()
{int a=10;printf("%zu\n",sizeof(a+3.14));//结果是8,int+double结果还是double
}

1.2 strlen

strlen 是C语⾔库函数,功能是求字符串⻓度

函数原型如下:

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));//随机值,因为找不到\0越界了printf("%d\n", strlen(arr2));//3printf("%d\n", sizeof(arr1));//12 sizeof(数组名)表示整个数组,计算的是整个数组的大小printf("%d\n", sizeof(arr2));//16 \0也算一个元素return 0; 
}

1.3 sizeof和strlen的对⽐

sizeofstrlen
1.sizeof是操作符1.strlen是库函数,使⽤需要包含头⽂件 string.h
2.sizeof计算操作数所占内存的⼤⼩,单位是字节2.srtlen是求字符串⻓度的,统计的是 \0 之前字符的个数
3.不关注内存中存放什么数据3.关注内存中是否有 \0 ,如果没有 \0 ,就会持续往后找,可能会越界
4.返回值类型是size_t类型,用%zu打印4.返回值类型是size_t类型,用%zu打印
http://www.dtcms.com/a/357304.html

相关文章:

  • 数据存储——数据库
  • 并发编程——07 深入理解AQS之独占锁ReentrantLock源码分析
  • 编程设计模式
  • 【系列02】端侧AI:构建与部署高效的本地化AI模型 第1章:为什么是端侧AI?
  • 【LINUX】常用基本指令(1)
  • go 使用rabbitMQ
  • 神经网络|(十六)概率论基础知识-伽马函数·中
  • Hugging Face入门指南:AI创客的数字游乐场
  • 解析json
  • LeetCode 142.环形链表 II
  • 【前端教程】JavaScript 数组对象遍历与数据展示实战
  • 动态规划01背包
  • 解锁Libvio访问异常:从故障到修复的全攻略
  • 从“Where”到“Where + What”:语义多目标跟踪(SMOT)全面解读
  • C# 日志写入loki
  • 海外广告流量套利:为什么需要使用移动代理IP?
  • 接吻数问题:从球体堆叠到高维空间的数学奥秘
  • 告别K8s部署繁琐!用KubeOperator可视化一键搭建生产级集群
  • 玄机靶场 | 冰蝎3.0-jsp流量分析
  • ACID分别如何实现
  • Dockerfile实现java容器构建及项目重启(公网和内网)
  • SOME/IP-SD IPv4组播的通信参数由谁指定?
  • React学习教程,从入门到精通, ReactJS - 特性:初学者的指南(4)
  • C++链表双杰:list与forward_list
  • ElasticSearch对比Solr
  • Node.js 的流(Stream)是什么?有哪些类型?
  • DQL单表查询相关函数
  • STM32F2/F4系列单片机解密和芯片应用介绍
  • Ubuntu虚拟机磁盘空间扩展指南
  • AI视频安防,为幼儿园安全保驾护航