主要区别如下:
1、sizeof是运算符,strlen是C语言标准库函数。
2、 strlen 测量的是字符串的实际长度,以’\0’ 结束,返回结果不包括’\0’ 。
3、而sizeof 测量的是字符的分配大小,它的参数可以是数组、指针、类型、对象、函数等。
具体而言,当参数分别如下时,sizeof返回的值含义如下:

数组-编译时分配的数组空间大小;

指针-存储该指针所用的空间大小;

类型-该类型所占的空间的大小;

对象-对象的实际占用空间大小;

函数-函数返回类型所占空间的大小;

例题1:
char *str1=“absde”;
char str2[]=“absde”;
char str3[8]={‘a’,};
int str4[8]={‘a’,};
char ss[] = “0123456789”;

输出:

sizeof(str1); // 4,计算的是指针内存的大小,包括’\0’
sizeof(str2); // 6 ,计算的是字符串的内存大小,包括’\0’
sizeof(str3); // 8 ,计算的是char型数组的内存大小
sizeof(str4); // 32 ,计算的是int型数组的内存大小
sizeof(ss); // 11 ,计算的是字符串的大小,包括’\0’
strlen(str1); // 5 ,计算的是字符串长度,不包括‘\0’
strlen(str2); // 5 ,计算的是字符串长度,不包括‘\0’
strlen(str3); // ? ,因为字符串需要找到’\0’才可结束,要在’a’之后找到’\0’,所以是个随机值
strlen(str4); // ? ,因为字符串需要找到’\0’才可结束,要在’a’之后找到’\0’,所以是个随机值
strlen(ss); // 10 ,计算的是字符串长度,不包括‘\0’

例题2:
what is the output of this code?
char s[20]=“Hello\0Hi”;
printf(“%d %d”,strlen(s),sizeof(s));

A 5 9
B 7 20
C 5 20
D 8 20

正确答案 C

例题3
char str[]=“hello”;
char *p=str;
int n=10;
//请计算
sizeof(str); //6,5+1=6,1代表’\0’
sizeof§; //4,代表指针
sizeof(n); //4,整形占据的存储空间

void func(char str[100])
{
sizeof(str); //4,此时str已经转换为指针了
}

void *p=malloc(100);

sizeof§;//4,指针大小

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的区别与使用

    前言:本文章主要用于个人复习,追求简洁,感谢大家的参考.交流和搬运,后续可能会继续修改和完善. 因为是个人复习,会有部分压缩和省略. 一.sizeof 1.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. spring中实现自己的初始化逻辑
  2. 三、6Gbps SAS冲锋队——Cheetah 15K.7、NS.2
  3. Apache将整合Google Wave功能
  4. ‘聪明的搜索算法’ A*算法
  5. ubuntu卸载openjdk-11
  6. 查找数组B中不在数组A中的元素
  7. mysql dump gtid_mysqldump GTID搭建主从复制库
  8. 数位dp总结 之 从入门到模板(stO)
  9. Silverlight Blend动画设计系列
  10. Flask笔记-静态资源和链接的管理
  11. Spring 框架 DAO 与 事务 的总结
  12. Linux下修改IP
  13. Google Maps API v3:如何删除所有标记?
  14. Go-闭包和匿名函数讲解
  15. 计算机考试准考证去哪下载
  16. SAP软件财务年结步骤
  17. python 四元数转欧拉角
  18. android调用webservice,Android开发调用WebService的方法示例
  19. 基于OMAPL138/C6748 + SPARTAN-6 77GHz汽车防撞雷达信号处理平台设计
  20. 16行,使用Python制作简易版QQ自动回复机器人(windows版)

热门文章

  1. 怎么利用手机App做任务赚钱
  2. Android禁止自动同步网络时间
  3. 2018年无人机行业发展环境与趋势分析 成为智慧化物流的关键突破口
  4. R语言SIR模型(Susceptible Infected Recovered Model)代码sir模型实例
  5. 论企业销售管理的重要性
  6. 在【运行】时输入IP地址访问局域网保存了凭据后如何取消?
  7. 李宏毅机器学习笔记(十六)——无监督学习(四):自编码器
  8. MTK 人像双摄虚化导通guide
  9. 仅两步,把JETSON XAVIER NX的系统移动到nvme硬盘上
  10. java毕业设计—— 基于java+JavaEE+jsp的售后服务管理系统设计与实现(毕业论文+程序源码)——售后服务管理系统