C语言sizeof和strlen的区别


主要区别如下:

1、sizeof是运算符不是函数,strlen是C语言标准库函数。

2、 strlen 测量的是字符串的实际长度,以’\0’ 结束,返回结果不包括’\0’ 。

3、sizeof不能计算动态分配空间的大小。

#include <test.h>
#include <stdio.h>
#include <string.h>
int test()
{
 char strl[]="1234";
 char *str2 = "1234";
 char str3[10];
//\r就是回车,并且回到行首,\n就是换行
//strlen函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止。
 printf("str1: %d %d\r\n",sizeof(strl),strlen(strl));// sizeof(str1); // 5,计算的是指针内存的大小
                                                     // strlen(str1); // 4 ,计算的是字符串长度,不包括‘\0’

 printf("str1: %d %d\r\n",sizeof(str2),strlen(str2)); //sizeof(str2); // 4,计算的是指针内存的大小
                                                       //strlen(str2); // 4 ,计算的是字符串长度,不包括‘\0’

 printf("str1: %d %d\r\n",sizeof(str3),strlen(str3));//sizeof(str3); // 10 ,计算的是char型数组的内存大小
             //strlen(str3); //"值不确定",因为字符串需要找到’\0’才可结束,要在’a’之后找到’\0’,所以是个随机值
return 0;

}

`输出:

str1: 5 4   //str1: 5 4	//字符串是以 '\0' 为结束标志的;str1[] = "1234";等价于str1[5]={‘1’,’2’,’3’,’4’,’\0’}
str1: 4 4   //str2: 4 4	//keil中(32位环境)指针大小是4字节,VScode中(64位环境)指针大小是8字节
str1: 10 0  //str3: 10 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值