sizeof与strlen 转发

openwrt编译及第一个安装包教程 Date: 2017.03.14 Made:SuperDeverloper Email: na1206@live.com Target: For mt7688 based board说明:本人在学习过程中走了不少弯路,希望本文档能为后来者提供便利。欢迎复制和使用本文档。本文档记录了搭建openwrt编译环境以及快速创建ipk包(openwrt上的安装程序)。本文档在实际应用中做过几次修改,以帮 阅读详情

strlen与sizeof的区别

 

1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。

该类型保证能容纳实现所建立的最大对象的字节大小。

2.sizeof是算符,strlen是函数。

 

3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以''/0''结尾的。

 

4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。

 

5.大部分编译程序在编译的时候就把sizeof计算过了 是类型或是变量的长度这就是sizeof(x)可以用来定义数组维数的原因 

char str[20]="0123456789";//str是编译期大小已经固定的数组

int a=strlen(str); //a=10;//strlen()在运行起确定

int b=sizeof(str); //而b=20;//sizeof()在编译期确定

 

6.strlen的结果要在运行的时候才能计算出来,是用来计算字符串的实际长度,不是类型占内存的大小。

 

7.sizeof后如果是类型必须加括弧,如果是变量名可以不加括弧。这是因为sizeof是个操作符不是个函数。

 char c;

 sizeof c;//变量名可以不加括弧

 

8.当适用了于一个结构类型时或变量, sizeof 返回实际的大小,

 当适用一静态地空间数组, sizeof 归还全部数组的尺寸。

 sizeof 操作符不能返回动态地被分派了的数组或外部的数组的尺寸

 

9.数组作为参数传给函数时传的是指针而不是数组,传递的是数组的首地址,

如: 

fun(char [8])

fun(char [])

都等价于 fun(char *) 

在C++里参数传递数组永远都是传递指向数组首元素的指针,编译器不知道数组的大小

如果想在函数内知道数组的大小, 需要这样做:

进入函数后用memcpy拷贝出来,长度由另一个形参传进去 

fun(unsiged char *p1, int len)

{

  unsigned char* buf = new unsigned char[len+1]

  memcpy(buf, p1, len);

}

 

我们能常在用到 sizeof 和 strlen 的时候,通常是计算字符串数组的长度

看了上面的详细解释,发现两者的使用还是有区别的,从这个例子可以看得很清楚:

 

har str[11]="0123456789";//注意这里str大小因该大于等于11,应考虑'/0'在内,否则编译器会报错

int a=strlen(str); //a=10; >>>> strlen 计算字符串的长度,以结束符 0x00 为字符串结束。

int b=sizeof(str); //而b=11; >>>> sizeof 计算的则是分配的数组 str[11] 所占的内存空间的大小,不受里面存储的内容改变。 

 

上面是对静态数组处理的结果,如果是对指针,结果就不一样了

 

char* ss = "0123456789";

sizeof(ss) 结果 4 ===》ss是指向字符串常量的字符指针,sizeof 获得的是一个指针的之所占的空间,应该是长整型的,所以是4

sizeof(*ss) 结果 1 ===》*ss是第一个字符 其实就是获得了字符串的第一位'0' 所占的内存空间,是char类型的,占了 1 位strlen(ss)= 10 >>>> 如果要获得这个字符串的长度,则一定要使用 strlen

 

另外,下面的方法可以用于确定该静态数组可以容纳元素的个数:

int a[3]={1,2,3};

cout << sizeof a/sizeof ( typeid( a[0] ).name() );

18、地下矿山中人工智能在区分真实微震事件与噪声信号的应用 本文提出一种基于遗传编程(GP)的新型经验模型,用于地下矿山中真实微震事件与噪声信号(特别是爆破信号)的自动区分。针对传统方法和常见机器学习算法存在的黑箱问题、过拟合及准确性不足等局限,GP模型通过符号回归和进化机制生成可解释的数学表达式,具备自动特征选择能力,有效提升了分类准确率。研究使用包含100个样本的真实数据库,结合敏感性分析优化模型参数,并与线性判别分析(LDA)进行对比,结果表明GP模型在分类性能上更具优势。该模型可应用于实时微震监测系统,提高矿山安全生产水平,降低误判带来的成本开销,具有良好的 阅读详情

相关推荐

实战指南:基于Windows Server构建企业级AAA认证体系

本文详细介绍了如何在Windows Server环境下构建企业级AAA认证体系,涵盖AD域服务部署、NPS服务器配置及华为设备对接实战。通过整合Radius协议与AD域账号管理,实现网络设备的统一认证与权限控制,提升企业IT安全管理效率。特别适用于需要零成本实现AAA认证的中大型企业。

weixin_28304023的博客 423

strlen与sizeof的区别

1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。该类型保证能容纳实现所建立的最大对象的字节大小。    2.sizeof是算符,strlen是函数。 3.sizeof可以用类型做参数,strlen只能用char*做参数,且必须是以/0结尾的。4.数组做sizeof的参数不退化,传递给strlen就退化为指针了。 5.大部

sqb0510的专栏 313

ArcGIS实战:用栅格数据为偏远山区规划一条最省钱的公路(附完整数据与操作步骤)

本文详细介绍了如何利用ArcGIS进行栅格数据分析,为偏远山区规划一条最省钱的公路。通过DEM高程数据处理、成本权重设定和最佳路径计算,结合真实案例展示了从数据准备到工程方案转化的完整流程,帮助工程师在复杂地形中做出经济高效的路线决策。

weixin_32136203的博客 357

(c语言)strlen函数与sizeof函数使用的相同与不同

/10 用数组占内存的总数/其中一个元素所占内存的总数=数组中的元素个数。//40 此处数组中有十个元素,一个元素占4个字节,故共40字节。

2301_79580018的博客 159

RK3588+TRL8367s四网口千兆交换机硬件调试与DTS配置实战

本文详细介绍了基于RK3588处理器与RTL8367S交换机芯片构建四网口千兆交换设备的硬件调试与DTS配置实战。文章深入对比了MDIO与SMI两种通讯方式的配置差异,提供了详尽的设备树代码示例,并总结了常见问题的排查思路,旨在帮助开发者高效完成嵌入式网络设备的软硬件集成与调试工作。

weixin_28308325的博客 470

8.26华为OD机试真题 新系统【仓库查询】

华为OD机试真题 新系统【仓库查询】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【仓库查询】多语言题解。

qq_45776114的博客 548

关于sizeof与strlen用法的讨论

今天在进行一个多线程文件传输的时候,在考虑到收发数据包的组成与拆包时,总是发现收发包会出现错误,导致收发报的失败。后来通过仔细检查,原来是 sizeof与strlen用法出现了错误,经过查找,我把资料拿出来和大家一起分享。1.sizeof操作符的结果类型是size_t,它在头文件中typedef为unsigned int类型。 该类型保证能容纳实现所建立的最大对象的字节大小。 2.sizeof

辛いいか 2022

Android RIL(Radio Interface Layer)全面概述和知识要点(3万字长文)

在 Android 系统这个庞大而复杂的体系里,RIL(Radio Interface Layer,无线接口层)绝对是个关键角色。简单来讲,它就像一座桥梁,一头连着手机基带,另一头接着上层应用 ,在应用程序和调制解调器(Modem)之间搭建起了信息交流的通道。想象一下,咱们在手机上点击拨号按钮,或者编辑一条短信发送出去,这些操作产生的请求并不会直接到达手机的基带处理器。而是先由 RIL 接手,它把这些来自上层应用程序的请求,像拨号、发送短信这类,巧妙地转换成能够和基带处理器顺畅交互的命令。

大模型大数据攻城狮的专栏 1600

【C语言】sizeof和strlen的区别【详解】

【C语言】sizeof和strlen的区别【详解】用法及示例

2301_77509762的博客 1万+

uniapp [全端兼容] - 详细实现拍照或相册选取图片后插入水印功能,手机拍照或相册上传图像并添加自定义水印及指定位置显示水印,uniApp给图片加水印后上传到后端服务器或保存到本机相册详细教程!

uni-app,h5移动端网页,微信小程序,支付宝小程序,Android安卓,苹果ios,app,nvue,图片水印,上传照片带水印,从相册选择图片加水印功能,拍完照片给图片加水印,添加照片水印,uniapp图片加水印,为图片添加自定义水印,uni-app上传图片并添加水印,上传图片加水印,uni-app如何对拍摄的照片加水印,uni-app实现图片上传添加水印操作,给上传的图片添加上水印,图片加完水印后如何上传到服务器,水印相机,拍照图片加水印,相册选取后给图片加上水印,渲染失败,无法保存,文字水印,日期

🏆 前端领域优质创作者 1万+

华为OD机试新系统真题-谁没交卷(Java /Py/C++/Go/C/Js)

华为OD机试 新系统真题【谁没交卷】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【谁没交卷】多语言题解。

qq_45776114的博客 425

关于 strlen 与 sizeof 的区别

关于 strlen 与 sizeof 的区别,我相信很多人都有所了解。以下我总结了几点关于strlen 与 sizeof 的区别和注意事项。 1. strlen 是函数,sizeof 是运算符。 2. strlen 测量的是字符的实际长度,以'\0' 结束。而sizeof 测量的是字符的分配大小。 比如: char str[20] = "hello"; printf("strlen: %

我的博客 3万+

实战篇| app爬虫不用真机

之前写过一篇基于真机app爬虫《App爬虫实战篇-以华为真机手机爬取集换社的app为例》,如果大家有用真机爬虫的经历,会深刻认识到真的不方便,一是自己的手机,经常会被电话、微信等打断,二是闲置手机,面对小批量数据还能勉强,大批量爬虫,会导致成本指数级上升,并且控制起来相对麻烦。以下就是常见的模拟器。emulator -avd my_avd -no-snapshot-save # 启动时不保存 snapshot。emulator -avd my_avd -wipe-data # 清除数据(恢复到出厂)

youbingchen的博客 597

sizeof和strlen的小知识

C语言小知识

2401_84577633的博客 1639

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

【C语言】sizeof和strlen的区别

sizeof和strlen的到底有啥区别,怎么用呢?

学了就忘是正常现象 3716

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

关于sizeof和strlen和数组

你真的了解sizeof和strlen吗?

wz_290793的博客 1462

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

sizeof与strlen的区别

char str[20]="0123456789"; int   a=strlen(str); /*a=10;strlen 计算字符串的长度,以为字符串结束标记。 int   b=sizeof(str); /*b=20;sizeof 计算的则是分配的数组str[20] 所占的内存空间的大小,不受里面存储的内容影响========================================

深度Java 8万+

C语言指针:数组名在sizeof与strlen中的运算

sizeof是操作符,不是函数。sizeof计算的是变量所占内存空间的大小,单位是字节。strlen是C语言库函数,功能是求字符串长度。strlen统计的是从str这个地址开始往后,到\0之前的字符个数。

m0_62183318的博客 937

sizeof() 与 strlen()的区别

深入理解sizeof作者:房秉毅  最近在论坛里总有人问关于sizeof的问题,并且本人对这个问题也一直没有得到很好的解决,索性今天对它来个较为详细的总结,同时结合strlen进行比较,如果能对大家有点点帮助,这是我最大的欣慰了。一、好首先看看sizeof和strlen在MSDN上的定义:首先看一MSDN上如何对sizeof进行定义的:sizeof Operatorsizeof exp

Louis的专栏 2493

C语言-sizeof与strlen的对比

鹏哥曾说:“学过了不等于学会了”实不相瞒,我是一位比特学员,或许是失了心气,我曾半途而废,如今也是重拾旧课、步履前行。环境为×64环境,即64位,故部分结果会与32位有所不同,尤其是地址相关部分。使用visual studio 2022。

caihan546的博客 1256

sizeof,sizeof与strlen的区别

sizeof是一个关键词也是操作符,专门用来计算类型或者变量大小,其实sizeof也可以计算数组的大小,单位都是字节。sizeof操作符的操作数可以是类型,也可以是变量或者表达式。sizeof(类型)sizeof 表达式sizeof运算符的返回值,C语言只规定是无符号整数,并没有规定具体的类型,而是留给系统自己去决定,sizeof到底返回什么类型。

wait___wait的博客 1170

sizeof与strlen的用法

解析C/C++语言中的sizeof一、sizeof的概念   sizeof是C语言的一种单目操作符,如C语言的其他操作符++、--等。它并不是函数。sizeof操作符以字节形式给出了其操作数的存储大小。操作数可以是一个表达式或括在括号内的类型名。操作数的存储大小由操作数的类型决定。 二、sizeof的使用方法   1、用于数据类型   sizeof使用形式:sizeof(type)

For Marie Curie 1万+

深入sizeof与strlen

sizeof不挑类型 strlen是指针且针对字符串,strlen 原型是size_t strlen(const char *str);

bkmoo的博客 1014

Sizeof与strlen区别以及用法

Sizeof与strlen区别以及用法 Sizeof Sizeof是函数还是关键字呢? 答:关键字,它是一个“披着函数皮的关键字”。做我的关键字,让人家认为是函数去吧。 为什么说是关键字呢?看看下面分析:我们借助编译器确认它的身份。 看下面的例子。示例选择题如下: int i = 10; A:sizeof(int) B:sizeof(i) C:sizeof int D:size

weizhengbo的博客 523

sizeof 和 strlen 的对比

本篇文章主要围绕着sizeof和strlen展开叙述,主要目标是了解这两个的用法,注意事项,以及辨析两者间的区别。

Alenenen的博客 843

【C语言】_sizeof与strlen

int型+int型得到int型,而后截断为short型,故sizeof(s=a+2)即sizeof(s)即sizeof(short)=2;2、由于常量字符串末尾隐藏一个'\0',strlen统计的是strlen函数的参数str这个地址至'\0'前字符串中字符的个数;,当程序运行时,sizeof已完成了对表达式结果所占内存的推断,运行时自然无法再计算表达式的结果;对于字符数组,\0的位置未知,故使用strlen计算得到的是随机值;当操作数为类型时,计算得到使用该类型创建的变量所占内存空间的大小;

m0_63299495的博客 1130
上一篇: 变量 转发
下一篇: string::find 与 string::npos
jstudy0
博客等级 码龄16年 101粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值