前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实例分析C语言中strlen和sizeof的区别

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

原创
作者头像
C语言中文社区
修改2021-05-27 10:31:31
7530
修改2021-05-27 10:31:31
举报
文章被收录于专栏:C语言中文社区

C语言中strlen和sizeof的区别

  • sizeof是操作符
  • strlen是函数

sizeof操作符返回的是参数所占的内存数,而 strlen函数返回的是参数的字符串长度,不是所占用的内存的大小。需要注意的是,strlen函数的参数是字符串,并且必须以串结束符“\0”结尾。看看下面的代码。

代码语言:txt
复制
/**
 * @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是指针时,结果会是怎样的呢?

我们一起来看下面的代码

代码语言:txt
复制
/**
 * @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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档