【C语言】深入理解指针(5)

目录

sizeof和strlen

1.sizeof

2.strlen

[3. sizeof 和 strlen 的对比](#3. sizeof 和 strlen 的对比)


sizeof和strlen

1.sizeof

  • sizeo正名:sizeof是操作符,不是函数,sizeof是操作符,括号内如果有计算不会进行计算
  • sizeof 是操作符,用于计算变量所占内存空间大小的,单位是字节,如果操作数是变量类型的话,计算的是使用变量类型创建的变量所占内存空间的大小
  • sizeof 只关注占用内存空间的大小,不在乎内存中存放什么数据

2.strlen

  • strlen 是C语言库函数,需要包含头文件#include <string.h> 功能是求字符串长度。函数原型为,统计的是 str 地址开始向后 \0 之前字符串中字符的个数。 strlen 函数会⼀直向后找 \0 字符,直到找到为止,所以可能存在越界查找。
  • 使用 "" 引号引起来的字符串末尾会补上\0
  • 使用 {} 数组括起来的字符末尾不会补上\0

3. sizeof 和 strlen 的对比

sizeof

  1. sizeof是操作符,括号内如果有计算不会进行计算
  2. sizeof计算操作数所占内存的大小, 单位是字节
  3. 不关注内存中存放什么数据

strlen

  1. strlen是库函数,使用需要包含头文件 string.h
  2. srtlen是求字符串长度的,统计的是 \0 之前字符的个数
  3. 关注内存中是否有 \0 ,如果没有 \0 ,就会持续往后找,可能会越界
相关推荐
寻星探路9 小时前
【深度长文】万字攻克网络原理:从 HTTP 报文解构到 HTTPS 终极加密逻辑
java·开发语言·网络·python·http·ai·https
lly20240611 小时前
Bootstrap 警告框
开发语言
2601_9491465311 小时前
C语言语音通知接口接入教程:如何使用C语言直接调用语音预警API
c语言·开发语言
曹牧11 小时前
Spring Boot:如何测试Java Controller中的POST请求?
java·开发语言
KYGALYX11 小时前
服务异步通信
开发语言·后端·微服务·ruby
zmzb010311 小时前
C++课后习题训练记录Day98
开发语言·c++
猫头虎12 小时前
如何排查并解决项目启动时报错Error encountered while processing: java.io.IOException: closed 的问题
java·开发语言·jvm·spring boot·python·开源·maven
YUJIANYUE13 小时前
PHP纹路验证码
开发语言·php
仟濹13 小时前
【Java基础】多态 | 打卡day2
java·开发语言
孞㐑¥13 小时前
算法——BFS
开发语言·c++·经验分享·笔记·算法