strlen和sizeof length size 的用法
时间: 2025-03-09 07:09:27 浏览: 91
### 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()` 表明分配了多少额外容量以备将来增长之需。
综上所述,理解这些概念有助于编写更加高效且不易出错的程序代码。
阅读全文
相关推荐


















