以下參考C++教學手冊第三版 洪維恩著 旗標出版股份有限公司
頁數9-34、10-6~10-9
如果a代表一維陣列
那麼
*(a+1)與a[1]都是陣列第2個元素(陣列編號從0開始,所以編號1是第二個元素)的值(內容)
&a[1]與a+1則是指向位址
你也可以這樣記
由於最外面的*號是依址取值的意思
所以一維陣列的*(a+1)是依址取值的意思,*號裡頭的就是指向位址,因此a+1則是代表指向位址。
如果num代表二維陣列
那麼
*(*(num+m)+n)代表取出二維陣列num裡第m+1列、第n+1行的值
上方講了陣列編號從0開始,所以m=0、n=0代表第1列第1行。【老外這樣發明可能跟源頭座標(0,0)有關】
你也可以這樣記
由於最外面的*號是依址取值的意思
所以二維陣列的*(*(num+m)+n)是依址取值的意思,*號裡頭的就是指向位址,因此*(num+m)+n則是代表指向位址。
雖然二維陣列可以用雙重指標表示
可是函數的引數不能接受設定雙重指標(只能單一指標)
因此
void func(int **){}是錯誤的