sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。
      strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符'\0'为止,然后返回计数器值(长度不包含'\0')。
       概念大概都很熟悉,但是碰到下面的题目很多人可能不能全对。
       牛客网上例题:       
32位系统上

1
2
char c1[]={'a','b','\0','d','e'};
char c2[]="hello";

sizeof(c1),strlen(c1),sizeof(c2),strlen(c2)值分别是 1 2 3 4 。

分析:
        字符数组c1有点特殊,里面包含一个字符串结束符‘\0’。
对字符数组,有以下几种定义方法:
1)        char str[]="12345";
或给字符串加上大括号:char str[]={"12345"};
这种方法定义时,系统自动在字符串的末尾加上字符串结束符,即 ‘\0’,
2)        char str[10]={'1','2','3','4','5'};
这种方法定义时,系统会自动从未初始化的元素开始,将之后的元素赋为\0,如上面的数组str中的元素实际上是:'1','2','3','4','5','\0','\0','\0','\0','\0'
3)        char str[]={'1','2','3','4','5'};
这种方法定义时,系统不会自动在字符串的末尾加上字符串结束符;
此时用sizeof()函数可以正确求出其所占的内存大小;但用strlen()函数不能正确求出其长度,因为strlen是通过\0判断字符串结束的。
32位系统上

1
2
char c1[]={'a','b','\0','d','e'};
char c2[]="hello";

sizeof(c1),strlen(c1),sizeof(c2),strlen(c2)值分别是5、2、6、5。

C++中sizeof和strlen相关推荐

  1. c/c++中sizeof()、strlen()、length()、size()详解和区别

    c/c++中获取字符串长度.有以下函数:size().sizeof() .strlen().str.length(); 一.数组或字符串的长度:sizeof().strlen() 1.sizeof() ...

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

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

  3. C语言中sizeof与strlen区别

    本文转载自:http://www.2cto.com/kf/201109/105100.html 1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写"abc& ...

  4. sizeof 和strlen的区别

    一.本质区别 sizeof和strlen有本质上的区别.sizeof是C语言的一种单目运算符,如++.--等,并不是函数,sizeof的优先级为2级,比/.% 等3级运算符优先级高,sizeof以字节 ...

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

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

  6. C++ sizeof与strlen

    sizeof与strlen的区别 基础知识: (1)sizeof <1> sizeof(...)是运算符,在头文件中typedef为unsigned int,其值在编译时即计算好了,参数可 ...

  7. Sizeof与Strlen的区别与联系

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

  8. C语言中,当计算字符数组长度时,用sizeof 和strlen 的原理及两者的区别

    字符数组的长度计算:必须以终止符'/0'作为边界,但对字符数组赋值时,有两种方式: 1: 定义时用字符初始化 (1)char chs[7] = {'a', 'c', '0', 'z', '3','d' ...

  9. [基础|理论|实验]Sizeof与Strlen的区别与联系

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

最新文章

  1. 最新的 PageValidate 类
  2. 【机器视觉】 default算子
  3. 重新解读DDD领域驱动设计(一)
  4. 十三、MySQL存储过程相关知识总结 + 案例讲解(强化)
  5. 阿里云高级技术专家周晶:基于融合与协同的边缘云原生体系实践
  6. PyQt4 UI设计和调用 使用eric6
  7. 【图像加噪】基于matlab多种噪声图像加噪(含信息熵)【含Matlab源码 1837期】
  8. 十天学会单片机(3)发光管闪烁,蜂鸣器发声
  9. CATIA V6二次开发——复杂装配体的结构树遍历
  10. mbot机器人自动超声波模式程序_测评 | mBot机器人秒变编程达人
  11. yolov3gpu配置_YOLO3-WIN10-GPU版配置详细教程
  12. 坐标转换 | 高斯坐标转经纬度坐标
  13. iOS 中常用的几个关键字的用法
  14. 华硕笔记本电脑电池保修范围
  15. 苹果电脑可以装windows系统吗_苹果电脑MacBook双系统安装好后,如何下载Windows支持组件?...
  16. CSS3干货23:常用字体样式设置
  17. unidbg第二讲 例子讲解com.sun.jna.JniDispatch32
  18. 社区宽带繁忙是什么意思_康平附近企业宽带价位,附近光纤宽带上门安装多少钱...
  19. 微信开发工具制作会动的海绵宝宝
  20. 孤陌山水间,时光莫追

热门文章

  1. 电脑格式化的危害_防止硬盘被格式化的六大方法
  2. python卸载_手把手教Python环境安装
  3. python 绘制围棋棋盘_围棋专业学员在“庆元旦 育苗杯”少儿围棋比赛中取得优异成绩...
  4. java如何遍历字典_Java中如何遍历Map对象的4种方法
  5. 信噪比:高端科研级相机的核心参数
  6. C语言文件的随机读写
  7. java model1和model2_Java项目(4)——探究两种开发模型的异同-Model1与Model2
  8. 03python面向对象编程5
  9. 在没有DOM操作的日子里,我是怎么熬过来的(终结篇)
  10. javascript面向对象系列第三篇——实现继承的3种形式