sizeof()和strlen()的区别

本篇文章主要给大家介绍关于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功能是计算字符串长度。

  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值