作者ttucse ((((>( ̄▽ ̄)<))))
看板C_and_CPP
标题[问题] *p++ = *q++
时间Sat Jan 24 00:54:08 2026
我只有学过java
c跟c++学得很烂
现在都写java
所以我指标也很烂
我在BSD UNIX的作者Bill Joy的演讲
看到这个*p++ = *q++
图在这里
http://i.imgur.com/3QSwcbZ.jpg
https://youtu.be/rByrD_R9Vuo
影片的19分44秒左右投影片上的程式码
所以想问*p++ = *q++
是什麽意思
还是这个写法不好
可是这个是BSD UNIX作者给的
让我很想知道这个的意思
谢谢大家
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.226.76.127 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1769187252.A.A08.html
1F:推 ilovemami: *p = *q:把 q 抽屉的东西拿出来,放进 p 抽屉。 01/24 00:58
2F:→ ilovemami: ++:搬完後,p 和 q 的指尖自动向後移一格 01/24 00:58
3F:→ ilovemami: 复制现在这一格 然後两边都指到下一格 01/24 00:59
4F:→ ttucse: 请问p跟q是阵列吗? 01/24 01:08
5F:推 ilovemami: p 和 q 是指标存放地址的变数 就两只手指 向阵列的开 01/24 01:11
6F:→ ilovemami: 头 01/24 01:11
7F:→ ilovemami: 这行 code 执行时 手指会按顺序一格格往後指 虽然阵列 01/24 01:11
8F:→ ilovemami: 固定不动但指标(手指)可以透过 ++ 移动 01/24 01:11
9F:→ ttucse: 懂了,谢谢。 01/24 01:17
10F:嘘 peter98: ...... 01/26 08:27
11F:→ peter98: 工作上谁敢写这种code 我把他吊起来打 = = 01/26 08:28
12F:推 pponywong: p[i++]=q[i++] 或是分两行写就好 现在编译器会帮你做 01/26 11:35
13F:→ pponywong: 最佳化 自以为聪明写程式 会让人看不懂 还有不一定符合 01/26 11:36
14F:→ pponywong: 现在的硬体设计逻辑 01/26 11:36
15F:→ pponywong: 你在80~90年代可以这样写 现在就不要学了 01/26 11:37
16F:→ Lipraxde: p[i++]...还真少见 01/26 16:44
17F:推 LPH66: p[i++]=q[i++] 这个才是全错的写法 01/26 19:28
18F:→ LPH66: 正确的是要拆两句 p[i] = q[i]; i++; 01/26 19:28
19F:推 Richun: p[i++]=q[i++]不会踩到UB吗? *p++ = *q++ 我知道不会 01/26 23:52
20F:推 KyuubiKulama: 看投影片应该是讲古介绍assembly idiom 对c的idio 01/27 01:36
21F:→ KyuubiKulama: m影响? 01/27 01:36
22F:推 hongsiangfu: 我会拆三行写,*p=*q;++p;++q; 01/27 09:42
23F:→ hongsiangfu: 星号不见了,自己脑部 01/27 09:42
24F:推 lc85301: 我的脑部…不见了( 01/27 21:43
25F:→ lc85301: 认真说 这种 code 在嵌入初始化 SRAM 的时候还满常看到 01/27 21:44
26F:→ bbbing: 就,拜托尽量还是用人话写程式啦 01/28 11:20
27F:推 if4: p[i++]=q[i++]指标会不一样吗?p[i++]=q[j++]有没有必要写这 01/29 07:30
28F:→ if4: 样 01/29 07:30
29F:→ sarafciel: p[i++]=q[i++]踩UB了 语意也完全不一样 01/29 08:02
30F:→ LPH66: 就是 UB 才会说全错,有时太机械地转换就会掉进这种坑 01/30 16:45
31F:推 chuegou: 推文+1 记忆体搬资料用 但这样写会让我脑内打结 我也是 02/04 18:39
32F:→ chuegou: 分三行 02/04 18:39