C语言中strlen和sizeof的区别
sizeof操作符返回的是参数所占的内存数,而 strlen函数返回的是参数的字符串长度,不是所占用的内存的大小。需要注意的是,strlen函数的参数是字符串,并且必须以串结束符“\0”结尾。看看下面的代码。
/**
* @author: 冲哥
* @date: 2020/12/13 18:12
* @description:微信关注公众号【C语言中文社区】,免费领取200G精品学习资料
*/
#include<stdio.h>
#include<string.h>
int main(){
char str[10] = "hello";
printf("字符串的长度为:%d\n", strlen(str));
printf("占用内存的大小为:%d\n", sizeof(str));
return 0;
}
运行结果:
从运行结果可以发现,strlen和sizeof之间的区别在于,通过sizeof操作符得到的是定义的字符数组str占用的内存大小,而通过strlen函数得到的是对其进行初始化的字符长度。
当str是指针时,结果会是怎样的呢?
我们一起来看下面的代码
/**
* @author: 冲哥
* @date: 2020/12/13 18:20
* @description:微信关注公众号【C语言中文社区】,免费领取200G精品学习资料
*/
#include<stdio.h>
#include<string.h>
int main(){
char *str = "hello";
printf("strlen(str) = %d\n", strlen(str));
printf("sizeof(str) = %d\n", sizeof(str));
printf("sizeof(*str) = %d\n", sizeof(*str));
return 0;
}
运行结果:
从运行结果发现,str占用内存的大小变为4,这是因为指针在32位计算机中占用4字节,所以其值为4,而接下来的sizeof(str)为1,这是因为str表示字符串首地址的内容,在此就是字符H,占用内存大小为1字节。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。