实例分析C语言中strlen和sizeof的区别

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
喜欢就支持一下吧
点赞0 分享