C语言中strlen和sizeof的区别
- sizeof是操作符
- strlen是函数
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字节。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END