strlen和sizeof区别

发布时间 2023-07-30 00:36:19作者: DawnTraveler

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 返回的是数据类型或变量的大小(包括空字符或额外内存)。在使用时要确保使用适当的方法来获取所需的信息。