strlen
和sizeof
是C/C++中用于获取字符串长度和内存大小的两个不同的操作。
strlen
是一个函数,用于计算字符串的长度(不包括终止空字符'\0')。它接受一个以空字符结尾的字符串作为参数,并返回字符串中字符的数量。在计算长度时,strlen
会从字符串的起始位置开始逐个遍历字符,直到遇到终止空字符为止。例如:
char str[] = "Hello";
size_t length = strlen(str); // length = 5
sizeof
是一个操作符,用于获取类型或对象在内存中所占的字节数。它可以用于获取数据类型的大小,也可以用于获取数组、结构体、指针等对象的大小。sizeof
在编译时计算,因此可以在程序中使用。例如:
char str[] = "Hello";
size_t size1 = sizeof(str); // size1 = 6 (包括终止空字符)
size_t size2 = sizeof(char); // size2 = 1 (char类型在大多数系统中占一个字节)
需要注意的是,sizeof
操作符返回的是对象或类型所占用的字节数,因此在计算数组的大小时会包括数组元素的个数乘以每个元素的大小。而strlen
函数只计算字符串的长度,不包括字符串的终止空字符。
总结如下:
-
strlen
是一个函数,用于计算字符串的长度。 -
sizeof
是一个操作符,用于获取类型或对象在内存中所占的字节数。 -
strlen
计算的是字符串的长度,不包括终止空字符。 -
sizeof
计算的是对象或类型所占的字节数,包括终止空字符(对于字符数组)。 -
strlen
在运行时计算,sizeof
在编译时计算。 -
sizeof
可以用于获取数据类型的大小,也可以用于获取数组、结构体、指针等对象的大小。