※ 引述《junshung@kkcity.com.tw (... (b) pic)》之銘言:
> 謝謝你 ^^, 但我不太懂 int(*)[2] 這種宣告方式 (可能是我的書或我的理解太差了=.=)
> 還有你的意思是說 int[2] (一維來說的話) 跟int*是同一種type囉 那又是為啥ㄋ?
int (*) [2] 這種 type 的意思,
是表示被宣告物是一個 pointer,
它所指向的目標是一個 array,
這個 array 內含 2 個 elements。
至於 pointer 和 array 本身並非同一種 type,
而是當你只寫出 array 名稱時,
它會被轉型為一個 pointer,
這個 pointer 會指向此 array 第一維度第一個元素的起始位址。
換句話說當你寫成這樣時:
int array[2][3];
那麼下面這兩行是一樣的意思(事實上無論是幾維都成立):
... = array;
... = &array[0];
其中你的 array[0] 會是一個內含 3 個 elements 的一維陣列,
所以指向它的 pointer 其 type 就應為 int (*) [3],
道理一樣是從一維的概念推上來的,
只是 type 的寫法你比較不熟悉罷了,
同樣的道理也能推至 N 維陣列上。
--
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"的狂狷不馴;屬於年少的輕狂色彩 ◎