专栏首页C语言中文社区实例分析C语言中strlen和sizeof的区别
原创

实例分析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字节。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • C++中strlen()和sizeof()的区别

    sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等。     ...

    用户7886150
  • 面试总结-C++

    堆、栈、自由存储区、全局/静态存储区、常量存储区 自由存储区存储malloc申请的内存 (1)从静态存储区域分配 。内存在程序编译的时候就已经分配好,这块内存在...

    小二三不乌
  • 搜罗的面试题总结(一)

    sizeof()作用:是C/C++的一个操作符,返回一个对象或类型所占内存字节数。

    用户5908113
  • C-sizeof和strlen区别,以及sizeof如何计算结构体大小

    对于数组时,strlen是判断’\0’为标志结尾的,而sizeof则计算的是数组整个空间 示例如下:

    张诺谦
  • 嵌入式软件工程师笔试面试指南-C/C++

    哈喽,大家好。最近几天,我把去年秋招总结的笔试面试的一些内容,又进行了重新规划分类。详细分成了简历书写,面试技巧,面经总结,笔试面试八股文总结等四个部分。

    嵌入式与Linux那些事
  • 光城归来之C语言开发网站

    最近要把防火墙项目做个页面,而底层全部c语言实现,那么就得做个web页面,想了一下,C大法这么厉害,也应该可以的,然后大家就见到了这篇文章。

    公众号guangcity
  • C/C++ 学习笔记五(结构体、字符与字符串)

    工作中经常使用到C/C++,为对C有个比较深刻的了解,重新拾起学习C的任务。在看书的同时,记录下思考的过程,也记录下重要的知识点。

    Celebi
  • c++字符串与c字符串

    1. C风格的字符串2. 字符串字面量3.C++ std::string 类3.1 C风格字符串的优势和劣势3.2 使用string类3.2.1 std::st...

    用户7886150
  • 后台开发:核心技术与应用实践 -- C++

    本书介绍的“后台开发”指的是“服务端的网络程序开发”,从功能上可以具体描述为:服务器收到客户端发来的请求数据,解析请求数据后处理,最后返回结果。

    范中豪
  • 【C进阶】拿着"sizeof这些用法和坑"去吹牛吧!

    今天分享一首bug技术交流群里小伙伴推荐的歌曲,bug菌听了以后心情久久难以平复,一首非常伤感的歌曲,当然更特别的是其背后的故事。(记得做好心理准备再听...

    GorgonMeducer 傻孩子
  • 力扣(LeetCode)刷题,简单+中等题(第31期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

    不脱发的程序猿
  • 基于EasyX的天气预报小程序

    上一篇分享了:分享一个有趣的库,让你学习C语言不会觉得那么枯燥。有几位小伙伴发表了自己的看法让我陷入思考。

    DeROy
  • 【读书笔记】读《程序员面试宝典》

      最近有幸拜读了《程序员面试宝典》(第五版)这本书,此书真乃良心之作,尤其对于我们这种未毕业的学生来说,更是一本不可多得的宝贵资料。

    马三小伙儿
  • 字符串的三种存储方式

      在数据结构中,字符串要单独用一种存储结构来存储,称为串存储结构。这里的串指的就是字符串。无论学习哪种编程语言,操作最多的总是字符串。我们平常使用最多的存储结...

    嵌入式与Linux那些事
  • 12寒假专辑:八、C语言其他考试重点

    1)字符串的 strlen() 和 strcat() 和strcmp() 和strcpy()的使用方法一定要记住。他们的参数都是地址。其中strcat() 和s...

    用户6755376
  • c语言直接读写ini配置文件

    现场好多地方反馈记录全采出来,无法入库。实际上采集部门专门做有一数据分析入库工具,但不是标准的,每个地方都需要采集部门特殊改。

    杨永贞
  • C语言中size_t和size_type 的区别

    1)size_tsize_t是用于数组的下标值类型,也可以用来“接收”sizeof操作符的返回值。

    ccf19881030
  • [C++]C++面试知识总结

    1.程序运行知识 1.1 内存布局和分配方式 C程序的内存布局如下: ? 静态存储区:存储全局变量和static变量,通常在程序编译期间已经分配好了。 BSS...

    昊楠Hacking
  • 力扣(LeetCode)刷题,简单+中等题(第30期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升。

    不脱发的程序猿

扫码关注云+社区

领取腾讯云代金券