strlen和sizeof区别
strlen 和 sizeof 是 C/C++ 中用于获取字符串长度或数据类型大小的两个不同的操作。
1.strlen:
- strlen 是在 C 语言和 C++ 中用于获取以空字符 ('\0') 结尾的字符串长度的函数。
- 它接受一个指向字符串的指针,并遍历该字符串,直到遇到空字符为止,计算出字符串的长度(不包括空字符)。
- strlen 返回的是字符串的字符数,即有效字符的个数,不包括空字符。
示例:
const char* str = "Hello, World!";
size_t len = strlen(str); // len 的值为 13
2.sizeof:
- sizeof 是一个运算符,用于在编译时获取数据类型或变量的大小(以字节为单位)。
- sizeof 在编译时完成运算,返回的是数据类型或变量占用的内存大小。
- 对于数组,sizeof 可以返回整个数组的大小。
示例:
char str[] = "Hello, World!";
size_t size = sizeof(str); // size 的值为 14 (包含空字符)
主要区别:
- strlen 用于获取字符串的长度,而 sizeof 获取的是数据类型或变量所占内存的大小。
- strlen 遍历字符串中的字符,直到遇到空字符,但不包括空字符在内。sizeof 在编译时计算大小,包括空字符或数据类型的额外内存。
- strlen 的参数必须是以空字符结尾的字符串的指针。sizeof 的参数可以是任意数据类型或变量。
需要注意的是,strlen 返回的是字符串的长度(不包括空字符),而 sizeof 返回的是数据类型或变量的大小(包括空字符或额外内存)。在使用时要确保使用适当的方法来获取所需的信息。
strlen和sizeof区别的更多相关文章
- 【转载】strlen与sizeof区别
自己小结: sizeof使用时,若是数组变量,则是数组变量占的大小 char a[10]; sizeof(a)=10 若是指针,则为指针大小,数组变量作为函数参数传递时,会退化成指针,且函数内是不知道 ...
- strlen与sizeof区别
1. strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止. c ...
- C语言——strlen()和sizeof的区别
strlen()和sizeof()的区别: strlen()——>C字符串库函数,返回字符串的真实长度.它是从内存某位置开始扫描,直到碰到结束符'\0'停止,返回计数器值. sizeof()—— ...
- 函数strlen()和sizeof的区别
函数strlen()和sizeof的区别: #include<stdio.h> #include<stdlib.h> #include<string.h> #def ...
- c语言中:strlen和sizeof的区别和它们分别交换各自作用领域(\0问题)时的细微差别!!!
本人c语言初学菜鸟一枚,今天通过敲了一段简单代码,发现strlen和sizeof之间的一些关系,总结如下: 用strlen计算数组长度要考虑进去\0 用sizeof计算字符串长度也要考虑进去\0 而s ...
- 说明sizeof和strlen之间的区别。
解析:由以下几个例子我们说明sizeof和strlen之间的区别.第1个例子: sizeof(ss)结果为4,ss是指向字符串常量的字符指针.sizeof(*ss)结果为1,*ss是第一个字符.第2个 ...
- 关于strlen和sizeof的使用
在学习C语言中发现strlen和sizeof的关系不是很明确,今天来总结一下这两个的区别: sizeof 是运算符,用来计算字节数,在计算字符串数组大小时包含(\0) 在编译时计算大小,参数可以是数组 ...
- Strlen()与sizeof()
在学习C语言时以及面试中,经常会见到strlen()与sizeof()这一对容易混淆的概念,搞清楚这两个概念,往往考察了编程人员对语言的基本掌握能力. 首先大家先明确两个概念是: 1.strlen() ...
- c strlen和sizeof详解
用双引号定义并且声明的时候明确指定数组大小的话,sizeof就会返回指定的大小,不会自动加1: char str2[10] = "hello c"; printf("st ...
- 注意字符串的strlen与sizeof的差别
unsigned char AT_RESET[]="r\r\n"; printf("strlen=%d sizeof=%d\n",strlen(AT_RESET ...
随机推荐
- bash shell笔记整理——外部命令和内部命令区别
linux命令的类别: 外部命令 内部命令 什么是内部命令 bash shell程序内部自带的命令. 什么是外部命令 不是bash shell内建命令,bash会根据用户给定的命令从PATH环境变量中 ...
- MySQL运维实战(1.1)安装部署:使用RPM进行安装部署
作者:俊达 我们在生产环境部署mysql时,一般很少使用RedHat Package Manager(RedHat软件包管理工具).用rpm或或者其他包管理器安装mysql有其好处,例如安装简单,并且 ...
- Java NIO 简介
NIO 简介 自 JDK 1.4 以来,引入了一个被称为 NIO(New IO) 的 IO 操作,是标准 IO 一个替代品.Java 的 NIO 提供了一种与传统意义上的 IO 不同的编程模型.有 ...
- Linux的期末冲刺
选择 一.Linux基础 Linux目录结构 相关命令: cd, ls, pwd 详解: Linux 目录结构采用树状结构,根目录为 /.用户的帐户信息保存在 /etc/passwd 文件中,包括用户 ...
- SQLite3使用笔记(1)——查询
目录 1. 概述 2. 详论 2.1. 打开/关闭数据库 2.2. 数据查询 3. 参考 1. 概述 SQLite是一个嵌入式SQL数据库引擎.与大多数其他 SQL 数据库不同,SQLite 没有单独 ...
- 当你运行npm run命令时,会发生什么?
摘要:今天我们来聊一聊运行npm run命令之后会发生什么. 本文分享自华为云社区<运行npm run命令的时候会发生什么?>,作者:gentle_zhou . 先前发了一篇"运 ...
- 华为AppCube入选Forrester《中国低代码平台市场分析报告》
摘要:知名研究与分析机构Forrester于11月11日发布<中国低代码平台市场分析报告(The State Of Low-Code Platforms In China)>,AppCub ...
- ByteHouse:基于ClickHouse的实时数仓能力升级解读
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 ByteHouse是火山引擎上的一款云原生数据仓库,为用户带来极速分析体验,能够支撑实时数据分析和海量数据离 ...
- ByteHouse技术白皮书正式发布,云数仓核心技术能力首次全面解读(内附下载链接)
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近日,<火山引擎云原生数据仓库 ByteHouse 技术白皮书>正式发布. 在数字化浪潮下,伴随着公有 ...
- Kafka--简介,部署
kafka官网:https://kafka.apache.org/documentation/ 本文kafka版本:3.1.0 一.简介 Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消 ...