深入 理解char char char a[ ] char a[] 的区别
C语言中由于指针的灵活性,导致指针能代替数组使用,或者混合使用,这些导致了许多指针和数组的迷惑,因此,刻意再次深入探究了指针和数组这玩意儿,其他类型的数组比较简单,容易混淆的是字符数组和字符指针这两个。。。下面就开始剖析一下这两位的恩怨情仇。。。
数组是多个元素的集合,在内存中分布在******相连的单元中,所以可以通过其下标访问不同单元的元素。。
指针也是一种变量,只不过它的内存单元中保存的是一个标识其他位置的******。。由于******也是整数,在32位平台下,指针默认为32位。。
由于C语言中没有真正的字符串类型,可以通过字符数组表示字符串,因为它的元素******是连续的,这就足够了。
C语言中规定数组代表数组所在内存位置的首******,也是 str[0]的******,即str =
因为还有一个关键,在C语言中字符串常量的本质表示其实是一个******,这是许多初学者比较难理解的问题。。。
看清楚了吧 ,你把China 看作是字符串,但是编译器把它看作是****** 0x3000,即字符串常量的本质表现是代表它的第一个字符的******。。。。。。。。。。
那么 %s ,它的原理其实也是通过字符串首******输出字符串,printf(%s , s); 传给它的其实是s所保存的字符串的******。。。
前面说到 a代表字符串的首******,而s 这个指针也保存字符串的******(其实首******),即第一个字符的******,这个******单元中的数据是一个字符,
C语言中数组名可以复制给指针表示******, 但是却不能赋给给数组名,它是一个常量类型,所以不能修改。。
字符指针可以用 间接操作符 *取其内容,也可以用数组的下标形式[ ],数组名也可以用 *操作,因为它本身表示一个****** 。。
当定义 char a[10 ] 时,编译器会给数组分配十个单元,每个单元的数据类型为字符。。
用一句话来概括,就是 char *s 只是一个保存字符串首******的指针变量, char a[ ] 是许多连续的内存单元,单元中的元素为char ,之所以用 char *能达到
char a [ ] 的效果,还是字符串的本质,******,即给你一个字符串******,便可以随心所欲的操所他。。但是,char* 和 char a[ ] 的本质属性是不一样的。。
由于[ ] 的优先级高于* 所以a先和 [ ]结合,他还是一个数组,数组中的元素才是char * ,前面讲到char * 是一个变量,保存的******。。
同过这句可以看到, 数组中的元素是字符串,那么sizeof(a) 是多少呢,有人会想到是五个单词的占内存中的全部字节数 6+7+8+7 = 28;
为什么,前面已经说到, 字符串常量的本质是******,a 数组中的元素为char * 指针,指针变量占四个字节,那么四个元素就是16个字节了
可以看到数组中的四个元素保存了四个内存******,这四个******中就代表了四个字符串的首******,而不是字符串本身。。。
可以看到 0012FF38 0012FF3C 0012FF40 0012FF44,这四个是元素单元所在的******,每个******相差四个字节,这是由于每个元素是一个指针变量占四个字节。。。
char **为二级指针, s保存一级指针 char *的******,关于二级指针就在这里不详细讨论了 ,简单的说一下二级指针的易错点。
为什么能把 a赋给s,因为数组名a代表数组元素内存单元的首******,即 a = &a[0] = 0012FF38;
虽然都是******, 但是指向的类型不一样,因此,不能这样用。,从其本质来分析,hello world,代表一个******,比如0x003001,这个******中的内容是 h
,为 char 型,而 s 也保存一个****** ,这个******中的内容(*s) 是char *,是一个指针类型,所以两者类型是不一样的。。。
s 变量中保存的是一个无效随机不可用的******, 谁也不知道它指向哪里。。。。,*s 操作会崩溃。。
相关文章:
- [房产信息]乌梅的作用与功效真实原因是什
- [房产信息]关于青瓦台预约背后真相是什么
- [房产信息]有关百里挑一45期看点是什么?
- [房产信息]一万次悲伤这是个什么梗?
- [房产信息]有关新星际宝贝真的还是假的?
- [房产信息]关于海林口罩帮这件事可以这样
- [房产信息]关于脍炙人口的英文歌网友怎么
- [房产信息]农村户口生二胎看看网友是怎么
- [房产信息]关于百变小樱粤语主题曲后续报
- [房产信息]有关霸爱小乖儿是真实还是虚假
- [房产信息]西边的风脚模真的假的?
- [房产信息]关于古代鬼故事到底是什么情况
- [房产信息]结界师第二季可以这样解读吗?
- [房产信息]有关美的电磁炉说明书到底是怎
- [房产信息]关于孔庙在哪里又是个什么梗?
- [房产信息]有关孙楠与买红妹究竟怎样?
- [房产信息]我只在乎你伴奏为什么会上热搜
- [房产信息]关于雷蛇黑寡妇蜘蛛真实原因是
- [房产信息]黄昏之传道师是传言还是实锤?
- [房产信息]有关无敌流浪汉作弊码具体是什
- 【雄关善治·五治融合】“五治融合”绘就和谐画卷——
- 美格智能技术股份有限公司第二届监事会第十次会议决议
- 华为美国子公司计划大规模裁员 中国雇员可回国并留在
- 4080显卡需要多少w电源笔记本什么时候出?
- 易方达天天理财货币A
- 值得但非首选]雷克萨斯NX200t两年详细使用感受
- 湖北奥运冠军谌龙喜获赛季首冠 感叹坚持终于有了回报
- 淘宝分期付款(淘宝上如何分
- 关于魔少的逃跑俏新娘又是什么梗?
- 改装档案BMW R nine T真是怎么改都好看!看看印度改出
- ROG6天玑版成安卓旗舰手机性能第一?真实用户评价亮了
- 有关五行带土的字的底层逻辑是什么?
- 加盟商百万欠款难追回 鱼乐贝贝“加盟圈套”何时终结
- 第七届中国-亚欧博览会透露哪些积极信号?
- 青海小西牛生物乳业股份有限公司
- 1~8月南通全市工业投资稳健增长 亿元以上工业项目产出
- 面瘫将军求子记具体内容是什么?
- 唇唇欲动无影有踪是真的吗?
- b是什么车标
- 斧头男大砍麦当劳事后操作更令人脊背发凉
- 担保]得润电子:关于为控股子公司融资提供担保的公告
- 立体激光显微镜
- 美的KFR-72LWBP2DN1Y-DA400(B3)
- Washington优先G2019财年第三财季归母净利润-44210万
- 关于虐杀原形2实验小队地图怎么回事?
- A站有钱了?连续拿下两部热门新番
- 《普法栏目剧》 20140826 十集迷你剧-真爱天涯(九)
- 京东方A(000725)
- “清华学术女神”颜宁在线打假@颜宁!
- 职教@新时代丨以终身学习理念为百万扩招做好准备
- 与六相关的成语 包含六的成语 - 成语接龙大全网
- 小米9 怎么开机?
- 仁东控股股份有限公司关于参加浙江辖区上市公司投资者
- “3亿欠款变成房”背后:工抵房数量激增折损3成供应商
- 日媒:日本企业物价指数连续六个月创新高
- 二后生六兰兰又是什么梗?
- 收入增速跑赢GDP不是简单的算术题
- 马斯克的神秘推文暗示“A Shortfall of Gravitas”着
- 游学者声望怎么开启会有什么样影响?
- 广汽挑战年销量目标6%左右的增长 多举措应对车市下行