📜  C 中字符串的strlen() 和 sizeof() 之间的区别(1)

📅  最后修改于: 2023-12-03 15:13:47.748000             🧑  作者: Mango

C 中字符串的 strlen()sizeof() 之间的区别

在 C 语言中,strlen()sizeof() 是两个常用的字符串函数,但它们的功能和用法有一些区别。本文将详细介绍这两个函数的区别和适用场景。

strlen()

strlen() 是 C 语言中的库函数,用于计算字符串的长度。它的原型为:

size_t strlen(const char *str);

strlen() 函数接受一个指向字符串的指针作为参数,然后计算字符串的长度,返回一个 size_t 类型的值。

#include <stdio.h>
#include <string.h>

int main() {
	char str[] = "Hello, World!";
	size_t len = strlen(str);
	printf("Length of str: %zu\n", len);
	return 0;
}

输出:

Length of str: 13

需要注意的是,strlen() 函数计算的是字符串中字符的个数,不包括字符串末尾的空字符('\0')。它会遍历整个字符串直到遇到空字符,并返回此时的字符个数。因此,对于包含空字符的字符串,strlen() 函数返回的长度将不包括空字符本身。

sizeof()

sizeof() 是 C 语言中的运算符,用于获取数据类型或变量在内存中的大小,单位是字节。对于字符串,sizeof() 返回的是整个字符串数组所占用的字节数。

#include <stdio.h>

int main() {
	char str[] = "Hello, World!";
	size_t size = sizeof(str);
	printf("Size of str: %zu\n", size);
	return 0;
}

输出:

Size of str: 14

需要注意的是,sizeof() 返回的大小包括了字符串末尾的空字符('\0'),因为它是数组的一部分。

区别和适用场景
  • strlen() 是一个函数,而 sizeof() 是一个运算符。
  • strlen() 返回的是字符串中字符的个数,不包括末尾的空字符;sizeof() 返回的是字符串所占用的字节数,包括末尾的空字符。
  • 如果需要获取字符串的长度(不包括空字符),应该使用 strlen()
  • 如果需要获取字符串在内存中的大小(包括空字符),应该使用 sizeof()

总的来说,strlen() 用于计算字符个数,sizeof() 用于获取内存大小。在处理字符串时,根据具体的需求选择合适的函数使用。

参考资料: