sizeof和strlen的区别

sizeof和strlen()都可以计算变量所占的内存空间大小,但是两者有很大的区别,所以要学会两者的用法,少犯错误。

1、sizeof是关键字,strlen()是函数;

2、sizeof的变量可以是任何类型,而string()只能计算字符串的长度;

如:sizeof(int)=4;sizeof(short)=2;charstr[]=”hello”;strlen(str)=5;

3、当计算字符串数组的长度时,sizeof的结果是包含”\0”在内的内存大小或者是系统分配给该数组的内存大小,而strlen()是计算字符串的实际大小。

 int a[10]={1,2,3};sizeof(a)=40;

char c1[]=”hello”;sizeof(c1)=6;strlen(c1)=5;

/*注意sizeof在字符串常量和字符串数组的区别

当字符串指针作为参数时,sizeof计算的是指针所占内存,大小为4个字节,当是字符数组时,计算的是字符串在内存中所占字节大小,包含“\0” */

       char *string="hello";

       printf("%d %d\n",sizeof(string),strlen(string)); //4 5

       printf("%d\n",sizeof(*string));             //1

 

       char str[]="hello";

       printf("%d %d\n",sizeof(str),strlen(str));     //6  5

4、关于数组的sizeof要更加注意,数组作为参数进行传递时,会退化为指针。

void fun1(char a1[3])

{

    int i=sizeof(a1);

}

void fun2(char a2[10])

{

int j=sizeof(a2);

}

上面的程序中i和j的大小均为4,这是因为a1和a2作为函数参数不再是数组类型,而是蜕变成指针,相当于char *a1,char *a2,指针大小始终为4。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值