当前位置: 首页 > news >正文

在线个人资料制作网站苏州无名网络科技有限公司

在线个人资料制作网站,苏州无名网络科技有限公司,做直播网站,最近新闻事件前言 (1)休闲时刻刷B站,看到一个卖课的,发视频问,char arr1[]{‘H’,‘E’,‘L’,‘L’,‘O’};和char arr2[]“HELLO”;区别是什么。 (2)看那个卖课博主一顿分析,最后成功得出&…

前言

(1)休闲时刻刷B站,看到一个卖课的,发视频问,char arr1[]={‘H’,‘E’,‘L’,‘L’,‘O’};和char arr2[]=“HELLO”;区别是什么。
(2)看那个卖课博主一顿分析,最后成功得出:字符串比字符数组末尾多一个’\0’。
(3)很好,成功浪费我生命的3分钟。无语,就这水平还卖课。如果各位有幸看到这货,希望能够保持清晰,不要被这种无良卖课机构欺骗。
(4)为了防止被当成地图炮,我声明一下,我只diss那种没啥实力乱忽悠的买课机构。对于教干货的培训机构,我还是保持尊重态度的!

浅层分析

存储大小

(1)就像那个卖课说的一样,字符串比字符数组末尾多一个’\0’。因此字符串比字符数组的大小比字符数组大一个字节。

char arr1[]={'H','E','L','L','O'};
char arr2[]="HELLO";
sizeof(arr1);  //返回5
sizeof(arr2);  //返回6,因为最后有一个'\0'

strlen()测试结果不一样

(1)那个卖课的也没有水到无药可救,这个程度还是分析到了,我还是有些许欣慰的。
(2)我们需要知道strlen()函数作用是什么。strlen()函数可以计算字符串的大小,而strlen()函数底层实现是什么呢?
(3)说白了一点一点的往后爬,,直到找到了ascii中的0。找到0之后,退出while循环,然后根据地址相减,就可以得出字符串长度。(注意:因为char只有一个字节,所以地址相减就可以直接得出字符串长度)
<1>可能还有一些同学没有理解,我直接拿上面的"hello"字符串分析,假设"hello"字符串首字符’h’的地址为0x50。因此传入strlen()函数的str的值为0x50。
<2>const char *s = str; 经过这一句,s也是0x50。
<3>第一次while(),*s为0x48(字符’H’的ASCII值是0x48),所以进入循环,s自增,从0x50变成0x51。
<4>按照<3>的步骤来4次,s是0x54的时候,在 while (*s)的时候,*s为0x4F(字符’O’的ASCII值是0x48),此时s再次自增。
<5>关键来了,第五次while (*s)的时候,我们发现,*s的值居然是0!于是退出while()循环。
<6>然后s - str =5即可计算出字符串长度了。

在这里插入图片描述

size_t strlen(const char *str) {const char *s = str;while (*s)s++;return s - str;
}

(4)现在我们知道了strlen的原理之后,我们再看看字符数组。字符数组中,char arr1[]={‘H’,‘E’,‘L’,‘L’,‘O’};的字符’O’后面的值是未知的,可能是0也可能是一些其他值,所以strlne()测试出来的字符数组长度是无法确定的!

总结

(1)上面这些都是非常浅显的知识,但凡认真学了C语言都懂的,真心搞不懂那个卖课的搞到那么神秘兮兮的干嘛。
(2)总结起来就是字符串比字符数组末尾多一个’\0’,因此导致存储大小和strlen()结果不一致。

深层分析

存储位置不一样

(1)字符串是存储在常量区的,一般来说,常量区存储在ROM中。
(2)字符数组存储位置要看情况而定。但是都是存储在RAM。
<1>如果字符数组是全局变量,就存储在静态数据区。
<2>如果字符数组是局部变量,就存储在栈中。

修改权限不一样

(1)字符串是存储在常量区的,所以说,字符串没有修改权限。CPU无法对字符串修改。
(2)字符数组要么是静态数据,要么是栈中。CPU都能够对字符数组进行修改。

断电存储大小不一样

(1)对于字符串而言,他是在常量区,所以即使机器断电,他的数据依旧存在。
(2)但是对于字符数组而言,假如他是局部变量。断电之后他的数据就会消失了。但是字符数组是全局变量他的数据还是会存在于ROM。
(3)这么不明白的同学,可以看RAM明明断电会丢失数据,为什么初始化的全局变量存储在RAM?详细分析程序的存储

http://www.yayakq.cn/news/988546/

相关文章:

  • 福建建设工程环保备案网站入口成都网站建设服务公司
  • 伴奏在线制作网站阿里云网站建站
  • 网站排名诊断小程序定制
  • 网页与网站的关系外贸建站用什么服务器
  • 织梦手机网站图片宣传网站开发
  • 打电话问网站建设推广那个网站做问卷好
  • 成都市微信网站建设公司视觉元素网站
  • 中山cp网站建设wordpress删除页头页尾
  • 广东省建设监理协会网站 - 首页wordpress 安装脚本
  • 网站怎样恶意刷搜索引擎营销方案例子
  • 只有单页面的网站怎么做seo做网站用win还是li
  • 两个域名 两个网站 如何推广学会建网站如何做网络营销
  • 南宁企业网站排名优化佛山网络推广平台
  • 东莞市做网站公司网站关键词排名怎么提升
  • 站规划在网站建设中的作用网站部分频道完全不收录了怎么做
  • html网站模板设计本接单大厅
  • 做公司网站的费用计入什么科目wordpress 内存超限
  • 如何做网店网站建设库
  • 上传网站源码wordpress wpjson
  • 定制制作网站公司网站开发实践研究报告
  • 如何上传模板到网站免费建站软件有哪些
  • 中国平湖首页规划建设局网站asp网站怎么做301
  • 做移动网站点击软件企业微信管理
  • html5 手机网站页面实例app应用网站html5模板
  • 上海电信网站备案seo是干啥的
  • 如何做阿里巴巴企业网站seo建站收费地震
  • 做外贸的网站怎么建立成都项目网站建设
  • 做伞的外国网站php做网站最容易
  • 网站建设推广建设工程抗震管理条例
  • 极客 pthyon 做网站wordpress htwo下载地址