(白话)C\C++中的size()、length()、strlen()、sizeof()用法

个人感觉C\C++对字符处理并不太好,本篇内容也是一些公司喜欢问的基础问题。

  1. 首先,讨论一下size()、length()、strlen()、sizeof()区别(很多人搞不清楚)
    1. size()和length()这两个函数是用来计算string类对象或者即STL对象方法。都是计算字符串长度。

    2. strlen()是函数,参数必须是字符型指针(char*),计算从开始到结束(’\0‘),返回的长度大小不包括’\0’,也是计算字符长度。
    3. sizeof()是运算符,不能计算复杂内存分配空间大小。计算字符所占空间大小。
  2. 实例(这里只考虑基础数据类型)
  • size()和length()实例
	string str1 = "qwe";
	int laji = 0,laji2 = 0;
	laji = str1.size();		//3
	laji2 = str1.length();	//3

运行结果:

  • strlen()实例
	char cha[10] = "abasdasc";
	char* ch3 = "shh";
	int i = 0, i1 = 0;
	i  = strlen(ch3);	//3	
	i1 = strlen(cha);	//8

运行结果:

  •  sizeof()实例
	char cha[10] = "abasdasc";
        char m_p[] = "shh";// { '1','2','3','4','5' };
	int length = 0;
	length = sizeof(ch3);	//4	包含\0结束符,所以长度+1
	length = sizeof(*ch3);	//1	*ch3是第一个字符
	length = sizeof(m_p);	//4
	length = sizeof(*m_p);	//1
	length = sizeof(cha);	//10 分配10个内存地址
	length = sizeof(*cha);	//1

这里有个特殊情况:

字符数组作形参传入函数是,会退化成指针。(这里实际是传入的数组的首地址,也就是个指针)

void function(char a[])
{
	cout<<sizeof(a)<<endl;
}
char array[20];
cout<<sizeof(array)<<endl;
function(array);

输出: 

20
4

 关于本博深入话题分享博客:

https://blog.csdn.net/li_jia_tu/article/details/88411499

https://blog.csdn.net/OneTapMan/article/details/82420950

https://blog.csdn.net/qq_41289920/article/details/86763959

https://www.liangzl.com/get-article-detail-15127.html

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

路奇怪

有钱出钱,没钱多出编程主意啊

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值