C_and_CPP 板


LINE

目前想新增一些东西,希望板友能够提出一些idea。 有了题目板工才能写内容 @@ 我希望能置底的诫律至少要符合其中一项条件: - 很重要的观念,但是很多人会搞错。 - C跟C++都有的东西,但是用起来不一样。 目前板工想到的有: - 空指标 (把之前写的补充一下) - call by value / call by reference的谬误 - C/C++ 转型的差异(const, void*) - lvalue & rvalue 有其他想法请踊跃提供,感谢。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 90.41.196.41
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1475404475.A.347.html
1F:→ Caesar08: c没有reference,也没有分lvalue和rvalue,要怎麽写? 10/02 18:55
C没有reference,可是还真的有很多人以为C有call by ref.....(把pointer当ref. = =) C有lvalue跟rvalue,至少在standard里面有(不过没像C++中定义的那麽清楚) C99/C11: The name ‘‘lvalue’’ comes originally from the assignment expression E1 = E2, in which the left operand E1 is required to be a (modifiable) lvalue. It is perhaps better considered as representing an object ‘locator value’. What is sometimes called ‘‘rvalue’’ is in this International Standard described as the ‘‘value of an expression’’. 关於rvalue只有这一段 ※ 编辑: wtchen (90.41.196.41), 10/02/2016 20:21:31 ※ 编辑: wtchen (90.41.196.41), 10/02/2016 21:10:54
2F:→ Caesar08: 为什麽C需要知道是不是rvalue? 10/02 21:27
3F:→ Caesar08: C++有move constructor、rvalue reference可以自动处理 10/02 21:27
例如13诫-8 : i = v[++i]; 这code在C++是OK的,C不行。 因为++i在C++里面是lvalue(可被assign) (在C里面好像没那麽麻烦,C++就).... ※ 编辑: wtchen (90.41.196.41), 10/02/2016 21:39:06
4F:→ Caesar08: http://ideone.com/NfzFWu ??? 10/02 21:46
5F:推 fatrabitree: C不行? 有吗? 10/02 21:53
6F:推 CoNsTaR: C 有 l、rvalue 的观念啊 10/02 22:05
7F:→ CoNsTaR: 最简单的例子就是你可以写 i++ 但是不能写 9++ 10/02 22:05
8F:→ Caesar08: 可是你的9是const 10/02 22:13
9F:推 CoNsTaR: 你一样没办法写 ((int)9)++ 不是吗 10/02 23:06
10F:→ CoNsTaR: 或是 int fun () { return 9; } fun()++; 10/02 23:07
11F:→ CoNsTaR: 而且我怎麽记得 C 会把 9 当成 int 而非 const int @@ 10/02 23:12
12F:→ tinlans: gcc 的错误讯息里也有包含 lvalue 这个字的句子啊 10/02 23:49
13F:→ tinlans: 像是 invalid lvalue in assignment 和 lvalue required 10/02 23:50
14F:→ tinlans: 比较传统的书在教 a = 1; 和 b = a; 就会教人区分两者了 10/02 23:51
15F:推 hunandy14: 前几天我发文的那篇後来没回我惹QQ 这里会有解答吗~ 10/03 13:46
16F:→ hunandy14: 我问了两个问题 我是想问第二个~ 10/03 13:47
17F:→ hunandy14: 是否从C++ 开始参数都应该使用 ref (效能更快)~ 10/03 13:48
18F:推 Sidney0503: rvalue和lvalue不用特别写吧?看effective modern C++ 10/03 14:30
19F:→ wtchen: hunandy14的问题我会答"no" (为啥你会觉得效能更快阿) 10/03 15:38
20F:→ hunandy14: 诶 我从一开始就误会了麽 就是 void fun(int i[999]){} 10/03 19:08
21F:→ hunandy14: 所以传入的时候并不会复制 999 笔资料是吧QQ 10/03 19:09
22F:→ wtchen: C/C++是不能传递整个阵列的喔,C++的情况就用ref罗 10/03 19:18
23F:→ wtchen: 请看13诫-12 10/03 19:18
24F:推 cobrasgo: 我的疑问是为什麽要写这种code呢?写的人期待每个人 10/04 00:34
25F:→ cobrasgo: standard都看得很熟吗? 10/04 00:34
26F:→ cobrasgo: 另外这个code放在不同compiler有机会会有不同的结果 10/04 00:34
27F:→ cobrasgo: 可植性很差 10/04 00:35
28F:→ cobrasgo: 要是warning关掉了,怎麽死的都不知道 10/04 00:36
29F:→ Caesar08: 就是因为写的人不知道,才会出现这种code阿 10/04 00:43
30F:→ hunandy14: 我觉得我举错例子了QQ 好难形容,感谢您的答覆~ 10/04 12:04
31F:→ hunandy14: 换个~如果引数是很大的类别 void fun(Demo a){} 这样呢 10/04 12:08
32F:→ wtchen: 那会整个copy,所以不建议这样,用pointer/ref.传递就好 10/04 16:06
33F:→ hunandy14: 好的了解谢谢~ 10/06 00:22







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灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP