C_and_CPP 板


LINE

※ 引述《devilarise (Devil)》之铭言: : ※ 引述《Ducray (贤贤)》之铭言: : : { : : char str[6]="abcde"; : : char *s; : : s=&str[0]; : : cout <<s<<endl; : : } : 上面第一行, char str[6]="abcde"; : 说的是, 宣告一个char形态的阵列, 阵列内, 存六个char字元的"指标" 不对 存六个 char 指标的阵列 是这样宣告的: char *str[6]; 写 char str[6] 只是宣告一个阵列存六个字元,不是六个字元的指标 : 所以, 单看char str[6]这段, 其实是一种指标的宣告 不是的 指标和阵列很像,但有微妙的差异 : 而且是一种连续的记忆体指标宣告, 其所需的空间大小必须被写死 : 并且在程式开始执行时, 就配置好这个空间 嗯...也不是 如果宣告在 function 内,它会配置在 stack 上 也就是在执行到该 function 的时候配置空间 而不是开始执行时就配置空间 你可以试看看在 function 内宣告一个超大的阵列 如果不呼叫该 function 并不会产生任何错误 但一呼叫就会因为 stack 空间不足而造成程式中止 : 而看後面="abcde";这段, 其实是让电脑在记忆体配置出六个char的物件实体 : 依序将这六个实体的值配置成 'a', 'b', 'c', 'd', 'e', '\0' : 然後将这六个字元的指标放入str阵列内 同上 是直接把值放进阵列 而不是把指标放进阵列 : 而第二行和第三行的意思是说 : 宣告一个字元指标, 并将这个指标用来存放str阵列[0]的指标(即指标的指标) 当然也不是指标的指标 s 单纯就是个 char* 指向阵列的第一个元素罢了 : 这样做法的後果是, 从此设计师去改动str或者改动s : 另一个的值都将同步被改变, 这是因为, 他们指向同一块记忆体中进行存取 : 为什麽我认为这样写不好? : 因为这是一种传址的动作 : 而一个初学者, 在他还搞不懂传值传址的差异之前 : 甚至在他完全不懂什麽是指标之前 : 这样的写法, 很容易让他在日後操作其他传值传址问题上卡住 就是为了要搞懂 才会这样写 然後拿问题来问大家呀 : 请各位回想一下, 自己还是C++初学者的时候 : char ch[10]; : 是不是总以为他跟int a;的宣告很类似 : 我是说, 那时候是不是都认为, 阿不都是变数? : 然後有一天懂得阵列跟指标之後才发现, : 原来char ch[10]; 其实是宣告了一种指标... 同上 阵列 != 指标 : 例如: : int a = 10; : int b = a; : 这懂C++的人都看得出来是传值 : 不是传址 : 所以 : int a = 10; : int b = a; : a+=100; : cout << b << endl; : 以上的code输出的结果是10而不是110 : 但是如果把以上的例子改成发文者的char写法呢? : 我输出b, 结果就会是110... : 最好新手都跟指标是好朋友 : 最好这样写这样教不会误导新手=.,=" : 希望这样说, 各未能听懂我在说什麽@@ : 如果有错, 请务必多多指教 : 我很乐意学习低@@ 我很清楚我也不过刚入门罢了 : 还有很多需要学习... 加油... --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.87.111
1F:→ devilarise:只能说我的表达能力真的很差=_="你说的我都能理解 11/29 12:24
2F:→ devilarise:例如阵列占用记忆体时机, 我写程式开始, 就是想写 11/29 12:25
3F:→ devilarise:开始跑这段程式码的时候...然後就被解读成: 11/29 12:26
4F:→ devilarise:程式刚启动的时候...一整个不同, 我会加强自己的表达@@ 11/29 12:27
5F:→ devilarise:anyway, 至此感谢各位的指教, 各位说的我都能理解 11/29 12:27
6F:→ devilarise:但我想说的是, 我的理解跟你们应该没有差异 11/29 12:28
7F:→ devilarise:只是我的表达能力远远不如各位 :( 11/29 12:28
8F:→ devilarise:还有, 就是请继续鞭我!@@ 这样我才知道我的解释多差@@ 11/29 12:30
9F:推 VictorTom:不好意思劳驾l大与b大s大回应了, 小弟因为准备出门所以 11/29 12:35
10F:→ VictorTom:一直只有零星推文Orz 另外l大的解释也比小弟自己吐得出 11/29 12:36
11F:→ VictorTom:来的清楚明白, 感谢也让小弟再更清楚观念. 另外如果原来 11/29 12:37
12F:→ VictorTom:的推文有让d大误解或不愉快的地方, 还请见谅....Orz 11/29 12:38
13F:推 twotwoone:大家真闲呀... 11/29 12:59
14F:→ MOONRAKER:阿星期天不闲哪一天闲啊 11/29 16:06
15F:→ VictorTom:哪有闲啊, 这两天都跑资讯展整个下午, 腰酸得要死...Orz 11/29 18:47







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP