本篇文章主要给大家介绍关于C语言中sizeof()和strlen()之间的区别。sizeof()和strlen()经常会被初学者弄混淆,但是还是有很大的区别的。
sizeof()
sizeof()是一种C语言中的运算符,为单目操作符(只接受一个操作数的操作符,包括!,++,--,~等),功能是计算操作数所占空间的字节数。
参数包括类型、指针、数组、函数等。
头文件是unsigned int 。
实例:
int main()
{
int arr1[] = { 0, 1, 2, 3, 4, 5 };
char arr2[] = "abcdef";
char arr3[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
char* p = "abcdef";
printf("%d\n", sizeof(arr1));\\整型
printf("%d\n", sizeof(arr2));\\字符
printf("%d\n", sizeof(arr3));\\字符
printf("%d\n", sizeof(p));\\地址
printf("%d\n", sizeof(*p));\\指针
return 0;
}
arr1[]中存储了0、1、2、3、4、5共六个整型常量,每个常量所占的空间大小为4个字节(32位),所以arr1所占空间数为24。
arr2[]中存储了字符串"abcdef",字符串默认以'\0'结尾,sizeof()计算字符串长度包含'\0';所以arr2所占空间数为7。
arr3[]中存储了字符型表示的'a', 'b', 'c', 'd', 'e', 'f' ,不包含'\0',所以arr3所占空间数为6。
*p为指针变量,p代表指针变量所占空间的大小,32位系统为4,64位系统为8;*p为指针变量的值,为1。
strlen()
strlen()是计算字符串长度的一种函数,以为'\0'为计算的终止符。
参数类型必须为char*。
头文件为#include<string.h>
实例:
int main()
{
char arr1[] = "abcdef";
char arr2[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
char* p = "abcdef";
printf("%d\n", strlen(arr1));
printf("%d\n", strlen(arr2));
printf("%d\n", strlen(p));
return 0;
}
arr1中存储了字符串"abcdef",字符串默认以'\0'结尾,strlen求字符串长度到'\0'结束,不包含'\0',结果是6。
arr2中存储了字符型表示的'a', 'b', 'c', 'd', 'e', 'f' ,不包含'\0',strlen必须找到'\0'才能结束,所以结果是随机值。
对比:
总结:
sizeof()与strlen()在C语言中的区别可以大致分为三个方面。第一类型不同,sizeof是操作符,strlen是函数;第二匹配的参数不同,sizeof参数包括类型、指针、数组、函数等,strlen参数类型必须为char*;第三功能不同,sizeof功能是计算操作数所占空间的字节数,strlen功能是计算字符串长度。