初始C语言,strlen函数和sizeof关键字的使用

"本文介绍了C语言中的sizeof关键字和strlen函数的区别。sizeof是关键字,返回数据类型或表达式占用的内存大小,包括数组总大小和单个元素大小。而strlen是计算字符串长度的函数,不包括结束符''。通过示例代码,展示了两者在处理数组和字符串时的不同行为。"
摘要由CSDN通过智能技术生成

初学入门 纯新手

粗略认识c语言

sizeof关键字 和 starlen 函数 的区别

-------------👉sizeof

sizeof 是一个关键字,而不是一个函数,可用于一个数据类型或者表达式

int main()
{
	int arr1[] = { 1,2,3,4,5,6,7,8 };
	char crr1[] = { 1,2,3,4,5 };
	char crr2[] = { '1','2','3','4' };
	char crr3[14] = { "hello world" };
	char crr4[] = { "hello world" };

	//sizeof可用一种数据类型 一个表达式
	printf("int数据类型的大小为 %d", sizeof(int)); //显示整数数据类型的大小。
	printf("\n字符数据类型的大小为 %d", sizeof(char)); //显示字符数据类型的大小
	printf("\n浮动数据类型的大小为 %d\n", sizeof(float)); //显示浮动数据类型的大小。
	printf("%d\n", sizeof(arr1));
	printf("%d\n", sizeof(arr1[2]));
	

	printf("%d\n", sizeof(arr1)/sizeof(arr1[0]));//计算数组内元素的个数



	printf("%d\n", sizeof(crr1));//字符串组的大小
	printf("%d\n", sizeof(crr3));
	printf("%d\n", sizeof(crr4));
]

对比可以查看输出结果:
在这里插入图片描述
可以看出,sizeof可以表达已经存储的数据的大,也可以精确到数组里面的一个元素
因此可以用来作为 表达数组元素个数的表达式 如上图单独空出来的代码

--------------------👉strlen函数

与sizeof的泛用性不同(毕竟一个是关键字,一个是库函数),适用于计算字符串的大小
如 ‘1’ ‘a’ 这种都可以称为一个字符
‘hello world’ 这样的一串字符称为字符串,字符串结束的标志为 ‘/0’,具体理解可以参考如下代码

int main()
{
	char crr1[] = { 1,2,3,4,5,'\0'}; //'\0'是字符串结束的标志,不算长度,但是占内存一个字节
	char crr2[] = { '1','2','3','4','\0'};
	char crr3[14] = { "hello world" };
	char crr4[] = { "hello world" };
	char crr5[] = { "hello w\0orld" };
	printf("%d\n", strlen(crr1));   //字符串长度为5,若没有结尾的\0 字符串的长度为随机值
	printf("%d\n", sizeof(crr1));  
//对比sizeof 计算的是存储数据的大小,与\0无关,输出结果为'6',且如果输入\0,输入结果变为'6'


	printf("%d\n", strlen(crr2));//同上
	printf("%d\n", sizeof(crr2));

//hello world 占11个字符

	printf("%d\n", sizeof(crr3));//输出结果为14,说明sizeof计算的是数据存储在内存的大小,与内容无关
	printf("%d\n", strlen(crr3));//输出结果为11,对比说明starlen计算的仅是字符串长度
	printf("%d\n", strlen(crr4));//同理,输出结果11  \0不算入字符串长度内
	printf("%d\n", sizeof(crr4));//输出结果为12,末尾自动补了\0

	//’\0'占一个内存,如果格子满了,则不会自动补\0

	printf("%d\n", strlen(crr5)); //'\0'是字符串的结尾
	printf("%d\n", sizeof(crr5));

	return 0;
}

对比输出图,对starlen的作用可以有更直观的理解
在这里插入图片描述

总结

sizeof是关键字,用于计算出的是数据所占内存的大小,可用于一个数据类型或者表达式。
即使数据为空,占了内存也会计入在内

可用sizeof计算数字的元素个数,用于解决基础数学问题

strlen 是c语言的库函数,用于计算字符串的长度,’\0’是字符串结束的标志
与内存无关


新手写文,记录所学,如有帮助,可以走波三连♥♥♥,一起进步
如有错误,还请大佬指√,万分感谢

  • 7
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值