×

sizeof和strlen区别 c语言sizeof和strlen区别

前端技术网 前端技术网 发表于2023-12-07 18:03:24 浏览3013 评论0

抢沙发发表评论

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

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

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

sizeof和strlen区别 c语言sizeof和strlen区别

举例说明如下:

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)

sizeof和strlen区别 c语言sizeof和strlen区别

二、串和数组的区别

字符数组内任意位置可写任意数据包括0x0,而字符串只有结束的位置有一个0x0,一但有了0x0这个数据,则字符串结束。对电脑而言只有二进制字节数组;对人脑才有字符、字符串、空字符结束符、数组等。

1、字符数组是指用来存放字符数据的数组。其定义的一般形式为:char数组名[数据长度]。字符数组用于存放字符或字符串,字符数组中的一个元素存放一个字符,它在内存中占用一个字节。C语言中没有字符串类型,字符串是存放在字符型数组中的。

2、例:

charc[10];

c[0]='I';c[1]='';c[2]='l';c[3]='o';c[4]='v';c[5]='e';c[6]='';c[7]='y';c[8]='o';c[9]='u';

以上定义了c为字符数组,包含10个元素。

由于字符型数据是以整数形式(ASCII代码)存放的,因此也可以用整型数组来存放字符数据,例如:

intc[10];

但这时每个数组元素占2个字节的内存单元,浪费存储空间。[1]

字符数组也可以是二维或多维数组,例如:

charc[5][10];

即为二维字符数组。

3、字符串主要用于编程,概念说明、函数解释、用法详述见正文,这里补充一点:字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的,如s=“abcdefghij”,则s[1]=“a”,s[10]="j",而字符串的零位正是它的长度,如s[0]=10(※上述功能Ansistring没有。),这可以给我们提供很多方便,如高精度运算时每一位都可以转化为数字存入数组。

三、strlen计算字符数组的长度

strlen()计算字符串长度,计算到字符串结束符'\0'为止。如果没有遇到字符串结束符'\0',计算结果将不正确。上面语句中,你还没有给a初始化,也未赋值,没内容。如果要算数组占内存大小要用sizeof()运算符,而不是strlen.

四、strlen的返回值怎么看

size_t__cdeclstrlen(constchar*);typedefunsignedintsize_t;根据这两个申明可以知道,strlen()函数的返回值类型是UINT无符号整型,范围0-42亿

关于sizeof和strlen区别,c语言sizeof和strlen区别的介绍到此结束,希望对大家有所帮助。