c语言中size of怎么用(C语言字符串如何使用strlen和sizeof)

3 strlen函数

C语言提供了strlen()函数,用于求字符串的长度。函数定义如下:

int strlen (const char *s);

包含的头文件是:

#include <string.h>

该函数就是求参数 s 指向字符串的长度。在介绍“数组”的这一章节中,讲解了字符串的定义。C语言规定,字符串必须以'\0'字符作为最后一个字符,表示字符串的结束字符,称为:字符串结束符。字符串结束符'\0'的ASCII是0数值。

例如"abcde"这样的字符串,实际上包含6个字符,分别是:

'a','b','c','d','e','\0'

可以看到,字符串就是由多个单独的字符组成,其中,最后一个字符必须是字符串结束符'\0'。

那么,我们可以把一个字符串赋值给字符数组,如下:

char array[6] = {'a','b','c','d','e','\0'};

如下是一个测试例子:

c语言中size of怎么用(C语言字符串如何使用strlen和sizeof)(1)

运行的结果如下:

c语言中size of怎么用(C语言字符串如何使用strlen和sizeof)(2)

可以看到,定义了字符数组array,数组名代表首地址,所以,数组名array可以表示一个指针,指向array数组存放数据的内存块。

那么,strlen(array); 获取了array指向内存块的字符个数。而且,计算字符个数的时候,是遇到字符串结束符 '\0' 字符就认为结束。所以,strlen()函数的返回的字符串长度,不包含字符串的结束符。

那么,我们可以写一个测试例子,设置 array[3] = '\0',就是设置数组中下标为3的元素是字符串结束符。测试代码如下:

c语言中size of怎么用(C语言字符串如何使用strlen和sizeof)(3)

程序运行结果如下:

c语言中size of怎么用(C语言字符串如何使用strlen和sizeof)(4)

此时,array[6] 中的数据相当于 {'a', 'b', 'c', '\0', 'e', '\0'};那么,使用strlen()函数获取字符串个数时,就从array指向的第一个元素开始数,遇到第四个元素是'\0'字符,是字符串结束符。

所以,strlen()遇到字符串结束符之后,结束字符串的长度计算。

5 比较strlen和sizeof区别

C语言中定义了sizeof操作符,获取一个变量或者类型占据的容量大小。而strlen()是一个函数,获取字符串的长度。程序测试例子如下:

c语言中size of怎么用(C语言字符串如何使用strlen和sizeof)(5)

程序运行结果如下:

c语言中size of怎么用(C语言字符串如何使用strlen和sizeof)(6)

可以看到,p1是一个指针,指向一个字符串。那么,strlen()函数可以获取该字符串的长度。sizeof运算符,获取指针变量p1占据的内存空间大小。

那么,指针变量p1占据4个字节,所以,sizeof(p1)返回4这个数值。

但是,如果sizeof操作符,接收的是一个字符串常量,那么,它返回该字符串常量占据的内存空间。程序测试例子如下:

c语言中size of怎么用(C语言字符串如何使用strlen和sizeof)(7)

程序运行结果如下:

c语言中size of怎么用(C语言字符串如何使用strlen和sizeof)(8)

可以看到,sizeof操作符,获取了 "xxxyy123" 字符串所占据的内存空间。它返回9这个数值,是因为占据了9个字节的内存空间。

注意,"xxxyy123"包含字符串结束符 '\0',所以,总共包含9个字符,占用9个字节的内存空间。而strlen()函数返回字符串的实际字符个数,返回数值8,不包含字符串结束符。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页