2012-03-23 45 views
3

基本問題..不得不問。任何幫助將不勝感激。爲什麼我不能取消引用多維數組的指針?

問:爲什麼我不能解引用指針多維數組是這樣的:

int arr [2][2] = { {1, 2} , {3, 4} }; 

printf("%d ", *arr); 
+2

一般情況下,你應該包括什麼錯誤(錯誤信息,預期的細節和實際輸出等。 )。 – 2012-03-23 01:03:49

回答

3

可以取消對它的引用,它僅僅是它的結果不會是你所期望:*arr不是int,這是一個指向一個int(OK,一維數組)。如果你想看到1印刷,再添明星:

printf("%d ", **arr); 
+1

'* arr'實際上是一個一維陣列,其衰減到指針'int'。 – 2012-03-23 03:12:33

1

嘗試:

int arr [2][2] = { {1, 2} , {3, 4} }; 

printf("%d ", **arr); 

您需要取消引用的兩個級別,爲您的數組是兩維。

+0

很酷......謝謝! – Iceman 2012-03-23 01:02:33

+0

爲什麼不直接使用索引? '的printf( 「%d」,編曲[0] [0])' – detly 2012-03-23 01:03:58

+0

只是poniters – Iceman 2012-03-23 01:07:05

1

如果aint[][]然後*aint[]。您需要另一個級別的重定向來訪問數組元素。也就是說,**aint

0

請記住,如果我們定義爲INT [] [],那麼就意味着它是一個二維數組,它可以通過一個**來解除引用。如果數組是一維的話,就要使用*一個取消對它的引用...

試試吧..

相關問題