2011-11-21 453 views
3

我只是在看這個問題:聲明指向數組的指針時是否需要括號?

How to assign a multi-dimensional array to a temporary variable?

該解決方案最終使用的線路:

int a[3][2] = {{1, 2}, {11, 12}, {21, 22}}; 
... 
int (*b)[2] = a; 

爲「分配一個靜態分配的,多維數組給一個臨時變量。 「

我有點困惑的行的語法:

int (*b)[2] = a; 

在這種情況下,需要括號來得到正確的效果,如果是這樣,爲什麼呢?有沒有辦法在不使用它們的情況下獲得相同的結果?

回答

6

此:

int (*b)[2] 

b宣告作爲一個指針,指向兩個int秒的陣列。這是不一樣:

int *b[2] 

它聲明b作爲兩個指針-TO- int的陣列。

您需要第一個表單才能正確執行指針算術。

+0

謝謝!出於某種原因,我無法在腦海中保持這種直覺。 –

+2

@woote:http://cdecl.org值得加書籤。 –

+0

是的,我只是從其他問題中檢查出來 - 這是一個非常酷的工具。 –