※ 引述《buganini.bbs@ptt.cc (蟲)》之銘言:
[略]
> *(p[a]+b)
[略]
> 會是*(p+a*8+b)
[略]
> 以上範例黃色的地方
> 我不清楚要不要*sizeof(int)
> 雖然我感覺上是要
> 不過我看書上寫好像不用
不用,pointer arithmetic 機制本身會幫你乘上去,
道理就跟 p + 1 還有 ++p 一樣,
實際上會乘以多少,
是看 p 本身的 pointer type 決定。
所以有一種技巧是將 (int *) 轉成 (char *),
然後每把 p + 1 只會走 sizeof(char) 的間距,
所以 (char *) 走 sizeof(int)/sizeof(char) 格只等於 (int *) 走一格,
其原理就是這麼來的。
--
Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net
School: National Tsing Hua University Department: Computer Science
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Undecided
Homepage: https://it.muds.net/~uranus
--
╔═══╗ ┼────────────────────────╮
║狂狷 ║ │* Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮
║ 年少║ ┼╮ < IP:140.119.164.252 > ╰─╮
╚╦═╦╝ ╰ * From:61-230-224-108.dynamic.hinet.net
─╨─╨─ KGBBS ─ ◎ 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 ◎