如何进行sizeof和strlen解析

发布时间 - 2023-05-27 00:00:00    点击率:

1.strlen函数.

strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符 '\0'为止,然后返回计数器值

2.sizeof操作符

sizeof()返回的是变量声明后所占的内存数,不是实际长度,此外sizeof不是函数,仅仅是一个操作符。

3.strlensizeof的区别

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

3.2  sizeof还可以用函数做参数,比如:short f(); printf("%d\n", sizeof(f()));输出的结果是sizeof(short),即2。

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

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

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

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

4.举例区别strlensizeof

1.char str[20]="0123456789";

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

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

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

char* ss = "0123456789";   

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

而sizeof(*ss) 结果 1 ===》*ss是第一个字符,其实就是获得了字符串的第一位'0' 所占的内存空间,是char类型的,占了 1位

strlen(ss)= 10 >>>> 如果要获得这个字符串的长度,则一定要使用 strlen。sizeof函数返回其参数在内存中所占用的字节数,而strlen函数返回参数所指向的字符串中字符的个数。

3.在使用sizeof时,有一个很特别的情况,就是数组名到指针蜕变,

char Array[3] = {'0'};   

sizeof(Array) == 3;   

char *p = Array;   

strlen(p) == 1;//sizeof(p)结果为4   

在传递一个数组名到一个函数中时,它会完全退化为一个指针

4. 内存补齐

class X

{

  int i;

  int j;

  char k;

};

X x;

cout

cout

内存补齐是一个在笔试面试中比较容易考的知识点 


# Array  # 常量  # strlen  # printf  # 整型  # 字符串常量  # 字符串  # char  # int  # 指针  # class  # 是一个  # 所占  # 的是  # 是个  # 第一个  # 可以用  # 补齐  # 编译程序  # 过了  # 这就是 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 弹幕视频网站制作教程下载,弹幕视频网站是什么意思?  专业商城网站制作公司有哪些,pi商城官网是哪个?  简单实现jsp分页  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  如何挑选高效建站主机与优质域名?  Windows10如何删除恢复分区_Win10 Diskpart命令强制删除分区  简历没回改:利用AI润色让你的文字更专业  如何在阿里云虚拟主机上快速搭建个人网站?  如何快速重置建站主机并恢复默认配置?  大连网站制作公司哪家好一点,大连买房网站哪个好?  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何获取免费开源的自助建站系统源码?  Laravel如何记录自定义日志?(Log频道配置)  香港代理服务器配置指南:高匿IP选择、跨境加速与SEO优化技巧  Laravel如何与Vue.js集成_Laravel + Vue前后端分离项目搭建指南  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  BootStrap整体框架之基础布局组件  如何在景安云服务器上绑定域名并配置虚拟主机?  如何在IIS中新建站点并配置端口与物理路径?  Laravel怎么上传文件_Laravel图片上传及存储配置  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel如何部署到服务器_线上部署Laravel项目的完整流程与步骤  怎么用AI帮你为初创公司进行市场定位分析?  如何用景安虚拟主机手机版绑定域名建站?  黑客如何利用漏洞与弱口令入侵网站服务器?  用yum安装MySQLdb模块的步骤方法  如何快速生成凡客建站的专业级图册?  使用Dockerfile构建java web环境  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  太平洋网站制作公司,网络用语太平洋是什么意思?  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  如何在阿里云香港服务器快速搭建网站?  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  iOS发送验证码倒计时应用  如何快速搭建高效简练网站?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  详解jQuery中基本的动画方法  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  Laravel观察者模式如何使用_Laravel Model Observer配置  香港服务器选型指南:免备案配置与高效建站方案解析  安克发布新款氮化镓充电宝:体积缩小 30%,支持 200W 输出  如何快速上传建站程序避免常见错误?  Laravel模型事件有哪些_Laravel Model Event生命周期详解  制作企业网站建设方案,怎样建设一个公司网站?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  深圳网站制作平台,深圳市做网站好的公司有哪些?  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?