(白话)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<

输出: 

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

 

 

你可能感兴趣的:(C++基础,小白入门)