sizeof
和 strlen
都是用来计算字符串或数组大小的操作符,但它们的用法和返回值略有不同。
sizeof
操作符
sizeof
是一个操作符,用于计算一个变量或类型占用的字节数。它返回的结果是该变量或类型占用的字节数,以字节为单位。sizeof
操作符只能用于计算数组、结构体、联合体、函数指针等变量类型的大小,不能用于计算字符串的大小。
下面是一个用sizeof
计算数组和字符串大小的例子:
#include <stdio.h>
int main()
{
int arr[5] = {1, 2, 3, 4, 5};
char str[] = "Hello, World!";
printf("Array size: %zu\n", sizeof(arr)); // 输出:Array size: 20
printf("String size: %zu\n", sizeof(str)); // 输出:String size: 11
return 0;
}
运行结果
strlen
函数
strlen
是一个函数,用于计算字符串的长度(不包括字符串结束标志\0
)。它返回的结果是字符串中字符的数量。strlen
函数可以用于计算字符串的大小,但不能用于计算数组、结构体等变量类型的大小。
下面是一个用strlen
计算字符串大小的例子:
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "Hello, World!";
printf("String size: %zu\n", strlen(str)); // 输出:String size: 11
return 0;
}
运行结果
总结:sizeof
用于计算变量或类型占用的字节数,只能用于计算数组、结构体、联合体、函数指针等变量类型;而 strlen
用于计算字符串的长度,只能用于计算字符串。