sizeof与strlen的区别

一、sizeof与strlen的主要区别点

  1.  strlen 是函数,sizeof 是运算符

  2.  strlen 测量的是字符的实际长度,以'\0' 结束(不包含'\0' )。而sizeof 测量的是分配空间的大小,如果未分配大小,则遇到'\0' 结束(包含'\0' ,也就是strlen测量的长度加1),如果已经分配内存大小,返回的就是分配的内存大小。

例子:


3.char a[5]=”abce”;
  sizeof(a);strlen(a);//sizeof输出5,strlen输出4

4.char a[]=”abcde”;
  sizeof(a);strlen(a);//sizeof输出6(abcde\0),strlen输出5

5.char *p="addfdf";//32位处理器sizeof(p)输出4(因为指针变量系统分配的内存大小是4),64位时是8。

6.char *p1=malloc(10);//sizeof(p1)==4。但此时的strlen(p1)的结果是0
  如果strcpy(p1,"aa");//则strlen(p1)的结果是2

二、数组的不同赋值对应不同的情况

#include <stdio.h>
#include <string.h>

int main(){
        char str1[]="am";//这样的赋值系统会在后面添加上'\0'
        char str2[]={'a','m','\0'};
        char str3[]={'a','m'};//这里没有'\0'的话,就会往后找直到找到'\0'才结束。所以会出现一定的乱码

        printf("str1:%s strlen(str1)=%ld sizeof(str1)=%ld\n",str1,strlen(str1),sizeof(str1));
        printf("str2:%s strlen(str2)=%ld sizeof(str2)=%ld\n",str2,strlen(str2),sizeof(str2));
        printf("str3:%s strlen(str3)=%ld sizeof(str3)=%ld\n",str3,strlen(str3),sizeof(str3));
        printf("\n");
        return 0;
}

运行结果

9d177cb42f18401bb7560a97feaef4ac.png

三、sizeof('a')的值

这种情况的值为4。因为C中认为常量字符'a'其实是个整型值(ASCII),所以sizeof('a')=4

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值