谈谈sizeof strlen length的用法

本文详细介绍了C/C++中的sizeof操作符的功能及其用法,并对比了C++中的length函数与C语言中的strlen函数的区别。通过具体示例,帮助读者理解不同场景下这些操作的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。
sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。
操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。

2.length只是针对字符串而言的 
  标准c里没有length这个函数 
  只有在C++中的CString类中才有length这个函数 。

3.strlen是C的函数。strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)
  开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值。

举例:
sizeof("12345")的值为6
length("12345")的值为5 
strlen("12345")的值为5不计算后面的'\0'

好久没怎么整理博客了,忙于写项目,最近还是会整理一些近期的心得体会吧!!
### C/C++ 中 `strlen` 和 `sizeof` 的区别 在 C/C++ 编程语言中,`strlen` 函数用于计算字符串的实际长度(不包括终止符 `\0`),而 `sizeof` 运算符则返回变量或数据类型的字节数。 对于字符数组而言: - 使用 `strlen` 可以获取实际存储的有效字符数。例如,在处理动态输入或者不确定大小的字符串时非常有用[^1]。 ```cpp char str[] = "example"; size_t len_str = strlen(str); // 返回7, 不计'\0' ``` - 而 `sizeof` 则会给出整个数组所占内存空间的总大小,这包含了可能存在的多余未初始化部分以及结尾处的空字符 `\0`[^2]。 ```cpp char str[] = "example"; size_t size_arr = sizeof(str); // 返回8, 包括'\0'在内的全部字符数量 ``` 当涉及到其他类型的数据结构如自定义结构体时,情况有所不同。比如下面的例子展示了如何定义并操作一个简单的行星信息结构体: ```cpp struct planet { char name[20]; double population; double g; }; planet earth = {"Earth", 7e9, 9.8}; size_t size_planet = sizeof(earth); // 计算该实例占用的空间总量 ``` 需要注意的是,如果尝试对指针应用 `sizeof`,那么得到的结果将是该平台下指针本身的尺寸而非其所指向对象的真实规模;而对于通过指针访问的内容,则应采用适当的方法来确定其有效范围,例如利用 `strlen` 对于字符串的情况。 关于 `length()` 方法和 `size()` 方法的应用场景主要取决于具体容器类的设计。通常来说: - 字符串类 (`std::string`) 提供了成员函数 `length()` 或者 `size()` 来查询内部保存序列的逻辑长度; - 容器类(如向量 `vector<T>`)一般提供 `size()` 成员函数表示当前元素数目,并且还有 `capacity()` 表明分配了多少额外容量以备将来增长之需。 综上所述,理解这些概念有助于编写更加高效且不易出错的程序代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值