C++ sizeof与strlen区别_C++数组长度计算方法

sizeof是运算符,计算内存大小,单位为字节,编译时确定,适用于所有类型;strlen是函数,求字符串字符数,运行时计算,仅用于以’’结尾的字符串。1. sizeof返回类型或变量所占字节数,对数组可求总大小,常用于计算元素个数:sizeof(arr)/sizeof(arr[0])。2. strlen从首字符计数至’’前一个字符,结果不包含’’。3. 数组传参时退化为指针,sizeof失真,strlen仍有效。4. C++推荐使用std::size(arr)或std::array::size()获取长度,避免指针误用。记住:sizeof看内存,strlen数字符。

c++ sizeof与strlen区别_c++数组长度计算方法

sizeofstrlen 在 C++ 中都可用于获取“长度”相关的信息,但它们的用途、原理和结果完全不同。理解它们的区别对于正确处理数组和字符串至关重要。

sizeof 是运算符,用于获取数据类型或变量所占内存大小

单位是字节(byte)。

sizeof 可以作用于基本数据类型、自定义类型、变量、数组等。它在编译时计算,返回的是该类型或对象在内存中占用的总字节数。

常见用法:

sizeof(int) → 通常为 4sizeof(char) → 恒为 1sizeof(double) → 通常为 8

对数组使用 sizeof 时,它会返回整个数组的字节长度,这使得我们可以用来计算数组元素个数:

立即学习“C++免费学习笔记(深入)”;

int arr[10];
int len = sizeof(arr) / sizeof(arr[0]); // len = 10

这是 C/C++ 中常见的计算静态数组长度的方法。

strlen 是函数,专门用于计算字符串长度

头文件:(C++)或 (C)

strlen 接收一个 const char* 类型的字符串指针,从首字符开始计数,直到遇到第一个 ‘’(空字符)为止,不包含 ‘’ 本身。

例如:

char str[] = "hello";
strlen(str); // 返回 5

注意:strlen 只能用于以 ‘’ 结尾的字符数组(即字符串),不能用于非字符串的普通数组。

关键区别总结

性质不同:sizeof 是编译期运算符,strlen 是运行时函数。参数要求不同:sizeof 可用于任意类型,strlen 只能用于以 ‘’ 结尾的字符串。计算内容不同:sizeof 返回字节数,strlen 返回字符个数(不包括 ‘’)。对数组退化敏感:当数组作为参数传入函数时,会退化为指针,此时 sizeof(arr) 返回指针大小(如 8 字节),不再是数组总大小;而 strlen 仍可正常工作,只要传的是有效字符串指针。

C++ 中计算数组长度的推荐方法

对于静态数组,使用:

int length = sizeof(arr) / sizeof(arr[0]);

更安全的方式是使用标准库

C++11 起可用 std::size(arr)(来自 )使用 std::array.size() 成员函数

例如:

std::array arr;
arr.size(); // 返回 5

避免对指针使用 sizeof 计算长度,因为那只会得到指针本身的大小。

基本上就这些。记住:sizeof 看内存,strlen 数字符,数组长度优先考虑 std::size 或容器自带方法。

以上就是C++ sizeof与strlen区别_C++数组长度计算方法的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1488046.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 11:13:11
下一篇 2025年12月19日 11:13:25

相关推荐

发表回复

登录后才能评论
关注微信