sizeof与strlen的区别

在日常编程中,sizeof和strlen以高频率出现在许多位置,尤其是在对字符串的大小进行计算时,今天我们来系统的了解一下他们。

首先是区别:

  1. sizeof是运算符,strlen是函数
  2. sizeof可以用类型或者函数做参数,strlen只能用char*做参数,且必须是以‘\0’结尾
  3. 对数组进行处理时,sizeof以数组为参数不会退化,而传递给strlen会退化为指针
  4. 大部分sizeof在编译阶段就进行处理,统计占用的内存大小,而strlen是在运行时才计算字符串的大小。
  5. sizeof操作符不能用于函数类型、不完全类型或位字段(不能处理未知大小的数据类型)

sizeof 的使用场合

  1. 查看某种类型的对象在内存中所占的内存大小(单元字节)
  2. 动态分配内存时,告诉系统分配多大的内存。
  3. 对于字节数可能发生变化的操作数,使用sizeof代替常量计算。

接下来通过一段代码来了解一下sizeof和strlen

int main()
{
	char str[10]="abcde";  //10个char型的数组
	char str1[]="abcde";//char型的字符串
	char* p = str; //char型的指针,指向str

	int size = sizeof(str); //str所占的内存空间大小10
	cout<<size<<endl;

	int size1 = sizeof(str1); //str1所占的内存空间大小5,'\0'结尾算一个字符
	cout<<size1<<endl;

	int len = strlen(str);//str1的字符串有效长度为5
	cout<<len<<endl;

	int size2 = sizeof(p);//p为指针,指针的大小在32位操作系统下为4字节
	cout<<size2<<endl;

	int len1 = strlen(p);//len1为指针所指向的字符串的有效长度
	cout<<len1<<endl;
	return 0;
}

执行结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值