前言:本文章主要用于个人复习,追求简洁,感谢大家的参考、交流和搬运,后续可能会继续修改和完善。

因为是个人复习,会有部分压缩和省略。

一、sizeof

1.sizeof用来计算类型或变量所占空间的大小,单位为字节。计算时包括 '\0'。('\0'算作字符串的结束标志,在使用strlen计算长度时不被计算进去)

2.两种特殊情况:sizeof(数组名) 和 &数组名,这两种情况下,数组名代表的是整个数组,其他情况下数组名代表的只是数组首元素地址。

3.sizeof是一个(单目)操作符,不是库函数,这个操作符返回的结果是size_t(unsigned int),即无符号整型。

4.sizeof(),括号中如果放变量,括号可以省略,如果是类型,不可以省略。(函数后的括号不能省略)

5.C语言标准规定:sizeof(long) >= sizeof(int)

6.sizeof括号中的表达式不参与计算

因为sizeof括号中的表达式是不参与运算的! 因为sizeof是在编译期间进行处理的,源文件在变成可执行文件过程中,经过预处理,编译,汇编,链接,sizeof在编译中就判断了c的大小,给出值为4,并且表达式不参与运算,而printf函数是在运行的时候再执行的,所以直接打印出4,和下面s变量的值0。

7.计算数组元素个数时,sizeof陷阱

我们在使用数组和函数时,有时需要用到数组的大小,这时,如果我们是在函数中使用传过来的数组首元素地址来计算整个数组的大小,就容易出现错误。

 用sizeof求数组大小时要注意,当数组被当作参数传递过去时,传过去的是数组的首元素的地址,因为是地址,所以用指针来接收,所以函数里面用sizeof求的都是指针的大小(值为4或8),不是数组的大小,所以求数组元素个数时,会出现指针大小除指针大小的情况,所以在函数中计算得出数组元素个数的值为1

二、字符串操作函数strlen

1.strlen计算字符串长度,不包括'\0'。

2.strlen比较大小可以用if(strlen("abcde")>strlen("abcdefeo")  )。但不要用两个字符串的strlen相减是否大于0来判断

 这个代码中arr1的长度明显小于arr2,直接比较时的结果是正确的。

 但是用两长度相减就容易出现bug,之所以会出现bug是因为strlen的返回值类型为size_t(无符号整型),即使相减小于0,得到的数仍为正整数。

如果非要减,可以使用强制类型转换来实现

3.数组未以'\0'结尾时使用strlen出现的问题

因为strlen的结束是'\0',即遇到'\0'就结束。那么当一个数组没有以'\0'结尾时,strlen会继续寻找

'\0',因为是在未知数据中,所以这时strlen计算出的结果会是一个随机值。

C语言sizeof与strlen的区别与使用相关推荐

  1. C语言 sizeof 和 strlen 函数区别 - C语言零基础入门教程

    目录 一.sizeof 函数与 strlen 函数区别 1.获取字符串长度 – 针对字符串 2.获取指针/数组长度 – 针对指针/数组 3.sizeof 获取内存大小 4.经典案例 二.猜你喜欢 零基 ...

  2. C语言 - sizeof和strlen的区别

    sizeof和strlen的区别: 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型. 该类型保证能容纳实现所建立的最大对象的字节大小. 2.s ...

  3. C语言sizeof和strlen的区别

    主要区别如下: 1.sizeof是运算符,strlen是C语言标准库函数. 2. strlen 测量的是字符串的实际长度,以'\0' 结束,返回结果不包括'\0' . 3.而sizeof 测量的是字符 ...

  4. C语言中sizeof与strlen的区别总结!

    C语言中sizeof与strlen区别总结! 先上一个例子: 结果: 一.sizeof与strlen char c[] = "abc\0cba"; 问题1:sizeof(c) = ...

  5. sizeof和strlen的区别(其中涉及NUL的讲解)

    本文是自己结合平时所学的知识,对sizeof和strlen的区别进行了总结,如有不对的地方还请批评指证,共同进步!!! 一.从C语言的定义上来讲 1.sizeof是关键字,而strlen是包含在str ...

  6. C语言中的sizeof()和strlen()的区别

    C语言中的sizeof和strlen的区别 sizeof() strlen 大量案例(想深入了解可以看) 1.(花括号int的sizeof()) 2.(花括号char的sizeof()) 3.(字符串 ...

  7. Sizeof与Strlen的区别与联系(转)

    一.sizeof sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可以是数组.指针.类型.对象.函数等.     它的功能是:获得保证能 ...

  8. Sizeof与Strlen的区别与联系

    Sizeof与Strlen的区别与联系(转) 1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型. 该类型保证能容纳实现所建立的最大对象的字节大小 ...

  9. 详说sizeof与strlen的区别与联系

    sizeof是C/C++中的关键字,它是一个运算符,其作用是取得一个对象(数据类型或者数据对象)的长度(即占用内存的大小,以byte为单位). 当参数分别如下时,sizeof返回的值表示的含义如下: ...

最新文章

  1. 树莓派3b+找不到wlan0官方解决方案
  2. oracle系统级别启动数据库
  3. Hadoop中-put和-copyFromLocal的区别
  4. shiro的内部体系结构
  5. linux检查运行程序文件,LINUX定时检查程序运行状态
  6. 年薪50W不是梦,100天掌握BAT前端中高级工程师必备技能
  7. linux NAND驱动之一:内核中的NAND代码布局
  8. linux怎么退出telnet端口,CentOS下怎么退出telnet
  9. KMP--找子串2.0
  10. TP-Link TD-W89841N 增强型无线路由器快速设置指南
  11. IEEE论文模板下载地址及说明
  12. weblogic安装部署升级小结
  13. wso2 esb 配置mysql_WSO2企业服务总线(WSO2 ESB)介绍
  14. Adobe Photoshop 中的魔棒工具
  15. 解决通过雪花算法生成的id前端接受数据精度丢失问题
  16. Java 复习之多线程
  17. PHPStudy环境下phpmyadmin卡顿延迟不流畅解决办法
  18. 【UCOSIII操作系统】任务篇(1)创建任务
  19. [2]_如何与老板顺畅沟通
  20. zip直链生成网站_手把手教你如何用飞桨自动生成二次元人物头像

热门文章

  1. c#中关于list去重的问题
  2. android 图片作为背景图片,android案例--图片取色并让图片融入背景色
  3. 【遥感图像:信息增强】
  4. 使用VUE实现在table中文字信息超过5个隐藏,鼠标移到时弹窗显示全部
  5. 微信小程序裁剪视频部分内容导出
  6. Pytorch里.t()的作用
  7. 电脑提示无法打开应用程序(0xc0000102),解决方法
  8. 中国8位域名大玩家:蔡文胜手中域名估值超1亿美元
  9. android listview 滚动条不隐藏,Android ListView隐藏右侧滚动条功能
  10. MFC画直线(dialog)