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

很多小白刚刚接触C语言的时候,总是会混淆sizeof()与strlen()的区别和用法,接下来呢,蔡姐就带小白们深入了解一下这两个东西。

区别

1.sizeof是C语言中的一个单目运算符,用来计算数据类型所占空间的大小,单位为字节;而strlen是一个函数,用来计算字符串长度。

2.sizeof()

#include <stdio.h>
int main()
{//计算各种数据类型所占空间的大小
	printf("int=%d\n",sizeof(int));
	printf("char=%d\n",sizeof(char));
	printf("float=%d\n",sizeof(float));
	printf("double=%d\n",sizeof(double));
	printf("short=%d\n",sizeof(short));
	printf("long=%d\n",sizeof(long));
	printf("long double=%d\n",sizeof(long double));
	return 0;
 } 

另外,我们思考一个问题,指针变量所占空间大小为多少字节呢?(可能有些小白还未涉及到指针)答案是:4个字节;为什么呢?因为指针就是地址呀,所以指针里面放的都是地址,而地址的长度当前是由地址总线的位数决定的,现在的计算机一般都是32位的地址总线,也就是占4个字节

 3.strlen()

是一个函数,需要引用头文件#include <string.h>,求字符串长度,返回计算的字符串的实际长度,即不包括‘\0’在内的实际字符的长度。

若没有引用头文件,将会出现如下警告:

我们插入代码,来看看二者的区别

#include <stdio.h>
#include <string.h>
int main()
{
	char arr1[]="abcd";//d的后面自动补上\0;
	char arr2[]={'a','b','c','d'};//以单个元素赋值,没有\0的结束符
	printf("strlen1=%d\n",strlen(arr1));//strlen()计算\0之前的字符长度
	printf("strlen2=%d\n",strlen(arr2));//该处计算结果应为随机值,因为arr2[]没定义元素个数,就无法知道在哪能遇到\0;
	printf("sizeof1=%d\n",sizeof(arr1));//计算了包含\0的数据空间大小
	printf("sizeof2=%d\n",sizeof(arr2));
	return 0;
 } 

 

 总结摘要:sizeof就是一个计算数据类型所占空间大小的单目运算符,在计算字符串的空间大小时,包含了结束符\0的位置;而strlen是一个计算字符串长度的函数,使用时需要引用头文件#include <string.h>,不包含\0,即计算\0之前的字符串长度。欧耶!

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值