sizeof() 和 strlen() 在 C 语言中两个非常常用,它们都与计算内存大小有关,但是它们的作用是不同的。
1、strlen
:这个函数用于计算字符串(char数组)中字符的数量,不包括结束符'\0'。它返回的是一个整数,表示实际字符的数量。
2、sizeof
:这是一个运算符,用于获取数据类型或变量在内存中占用的字节数。它可以用于任何数据类型,如基本类型、结构体、数组等,返回的是一个整数。
sizeof() 和 strlen() 的主要区别在于:
sizeof()
是一个关键字、运算符,而strlen()
是一个函数。sizeof()
计算的是变量或类型所占用的内存字节数,而strlen()
计算的是字符串中字符的个数。sizeof()
可以用于任何类型的数据,而strlen()
只能用于以空字符 '\0' 结尾的字符串。- sizeof() 计算字符串的长度,包含末尾的 '\0',strlen() 计算字符串的长度,不包含字符串末尾的 '\0'。
总结来说:
sizeof
关心的是内存占用空间的大小,计算的是实际长度
strlen
关注的是字符数组的内容长度,计算的是有效长度
使用strlen需要添加头文件#include<string.h>
//sizeof计算的是数组的实际长度,strlen计算的是数组的有效长度
char cdata[128] = "hello";
printf("sizeof:%d\n",sizeof(cdata));//sizeof计算得出cdata[]的大小是 128
printf("strlen:%d\n",strlen(cdata));//strlen计算得出cdata[]的大小是 5