C语言中的sizeof()和strlen()的区别 - 新闻资讯 - 云南小程序开发|云南软件开发|云南网站建设-昆明葵宇信息科技有限公司

159-8711-8523

云南网建设/小程序开发/软件开发

知识

不管是网站,软件还是小程序,都要直接或间接能为您产生价值,我们在追求其视觉表现的同时,更侧重于功能的便捷,营销的便利,运营的高效,让网站成为营销工具,让软件能切实提升企业内部管理水平和效率。优秀的程序为后期升级提供便捷的支持!

您当前位置>首页 » 新闻资讯 » 技术分享 >

C语言中的sizeof()和strlen()的区别

发表时间:2020-10-19

发布人:葵宇科技

浏览次数:86

C说话中的sizeof()和strlen()的差别

sizeof()和strlen()经常会被初学者混淆,但个中有有很大年夜差别:

1.sizeof()【操作数所占空间的字节数大年夜小】是一种c中的根本运算符。
可以以类型、指针、数组和函数等作为参数。
头文件类型为unsigned int。
运算值袈溱编译的时刻就出结不雅,所以可以用来定义数组维数。

char a[5]="123";
int b=sizeof(a);//b=5
int c=strlen(a);//c=3

sizeof()是一种单目操作符,是用来计算你所应用的操作数所占的空间字节大年夜小。

2.strlen()[计举动当作符串的长度]是一种函数。//"\0"作为终止符;
strlen的结不雅运行的时刻才出来,是计举动当作符串长度的。
其参数必须是字符型指针(char*)。
函数声明为 内联代码片。头文件#include<string.h>


size_t strlen(const char *str)//size_t()

在这里插入图片描述以下是一些具体的实例(vs2013 设置为32位):

int main()
{
	char *p = "hello";
	char arr1 []= "hello";
	char arr2[] = { 'h', 'e', 'l', 'l', 'o' };
	printf("%d\n", sizeof( p));
	//结不雅4,因为指针变量的所占空间大年夜小仅仅和操作体系位数有关32-4,64-8
	printf("%d\n", sizeof(arr1));
	//结不雅6,字符串默认以\0结尾,sizeof()包含\0的计算
	printf("%d\n", sizeof(arr2));
	//结不雅为5,因为为字符型表示,并不含有\0(仅仅字符串有\0)
	printf("%d\n", strlen( p));
	//结不雅为5,strlen求的是字符串的长度,不包含\0
	printf("%d\n", strlen(arr1));
	//结不雅为5,strlen求的是字符串的长度,不包含\0
	printf("%d\n", strlen(arr2));
	//因为字符型不包含\0,但字符串须要找到\0才可停止,所以在'o'之后持续向后攫取直到找到\0,所所以一个随机值

法度榜样运行结不雅如上结不雅如上;
在这里插入图片描述设置为32位操作体系

相关案例查看更多