当前位置:首页 > 开发语言 > 正文

sizeof和strlen的区别 字符串的sizeof和strlen

sizeof和strlen的区别 字符串的sizeof和strlen

大家好,今天来为大家分享sizeof和strlen的区别的一些知识点,和字符串的sizeof和strlen的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以...

大家好,今天来为大家分享sizeof和strlen的区别的一些知识点,和字符串的sizeof和strlen的问题解析,大家要是都明白,那么可以忽略,如果不太清楚的话可以看看本篇文章,相信很大概率可以解决您的问题,接下来我们就一起来看看吧!

strlen和sizeof的区别

1、strlen和sizeof代表的含义不同

在定义时,要知道到strlen是一个函数,它用来计算指定字符串str的长度,但不包括结束字符(即null字符)。而sizeof是一个单目运算符,而不是一个函数,它的参数可以是数组、指针、类型、对象、函数等。这就是strlen和sizeof的最本质区别。

如果你不能提前区分strlen和sizeof所表示的含义和领域,那么就没有研究下去的必要了。一旦运用是发生混淆或者用错,那么肯定不可能完成既定目标。在使用时一定要牢记这一点最基本的区别

2、strlen和sizeof的功能不一样

想要区分strlen和sizeof,那么就要了解strlen和sizeof两者都有什么功能。只有知道了strlen和sizeof的功能,才能更好的去灵活运用它们。

相比较来说sizeof的功能能比较简单,主要是:获得保证,能容纳实现所建立的最大对象的字节大小。而strlen的功能就比较多和繁琐了,是返回字符串的长度,这个字符串可能是自己定义的,也可能是内存中随机的,这个函数实际完成的功能是从代表该字符串的第一个地址开始遍历,直到遇到结束符NULL,返回的长度大小不包括NULL。

c语言length求的是实际长度还是

C语言计算长度一般使用strlen函数及sizeof操作符。strlen是计算字符串的实际长度,不包括字符串末尾的结束符‘\0’;sizeof这个单目运算符是求一个数据类型或者表达式的长度,即在内存中所占的大小。

C语言中的strlen(str)函数反回值中包括字符串的结尾符吗sizeof(str)包括吗看

你自己上机验证一下就会明白。编程就是需要多动手,多实验,才能真正解惑!

charstr[10];sizeof(str)得到的是变量str所占的内存大小,与其中有没有数据没有关系,因此,这里是10strcpy(str,"hello");strlen(str)

;//这里得到的是str中装的数据个数,不包括结束符,此时,为5

main(){char*s="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}输出结果是why

第一次循环,输出第一行。s[1]为第二个字符串的地址(确切的说是第二个字符串第一个*的地址),s[0]为第一个字符串的地址(确切的说是第一个字符串第一个*的地址),

s[0]+strlen(s[1])-1)=s[0]+3。(注意这里s[0]是第一个字符串的首地址,所以加3之后就相当于指向第四个字符),所以输出的是第一个字符串的第四个字符,*。第二次循环,s[0]+strlen(s[1])-1)=s[0]+2,s[0]+2指向的是第一个字符串的第三个字符,输出的就是从第三个字符到占空符\0之间的东西,也就是**。然后依此下来,输出分别是

*

**

***

****

c语言的size of,strlen什么意思

sizeof函数是计算数据空间的字节数;

strlen函数是计算字符数组的字符数,以"\0"为结束判断,不包含结束字符'\0'。

举例说明如下:

inta;

charb[]="abcd";

printf("%d",sizeof(a));//输出变量a所占的内存字节数,输出4

printf("%d",sizeof(b));//输出字符数组b所占的内存字节数,输出5(5=4+1,1为结束字符所占的内存)

printf("%d",strlen(b));//输出字符数组b中字符的个数,输出4(不含结束字符''\0)

C中,字符串的长度和占用的存储字节有什么区别

长度是字符串的字符数,比如:char*p="1234";那么p的字符数就是4,4就是其长度,也可以理解为strlen和wcslen对字符串的返回值。

占用存储字节是该字符串在内存中所占用的存储空间的表示,还是上面那个字符串,其占用存储空间就是5,包括一个空字节,所以其占用字节数为5。

因此C风格ASCII字符串的长度和其字符数是不同的,除了C风格字符串(以空字节结尾的字符串),其他ASCII字符串也有长度和占用存储空间相同的情况,比如STL中的string其内存占用空间就和字符长度相同,因为它不是用空字符来标识字符串结尾的。

所以对于ASCII字符串,其长度和所占字节数可能相同。

而对于宽字符wchar_t或unicode,其字符长度肯定和所占字节数不同。

wchar_ts[]=L"1234";sizeof(s)是10,wcslen(s)是4。知道了吧,简单点这2个概念也可以理解为sizeof和strlen或wcslen返回的长度。

OK,关于sizeof和strlen的区别和字符串的sizeof和strlen的内容到此结束了,希望对大家有所帮助。

最新文章