2014-01-09 48 views
1

我有一個二維數組C - 這個變量的類型是什麼?

爲前

int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}}; 

那麼這將是這種類型的?

&arr[1] 

我認爲這將是**(雙指針) 但是,當我寫一個函數,如

int **get_arr() 
{ 
    return &arr[1]; 
} 

我得到一個警告

return from incompatible pointer type 
+2

閱讀[comp.lang.c常見問題](http://www.c-faq.com)的第6部分。你可能想避免使用「double pointer」這個短語。它也可以指代'double *'類型。 –

+0

然後閱讀[this](http://stevenkobes.com/ctest.html) – user3125280

+1

@ user3125280 - 這個建議_really_意在幫助什麼嗎? – ryyker

回答

5

那麼會是什麼這種類型?

&arr[1] 

&arr[1]類型是int (*)[3],即,它是類型的指針爲3點的整數陣列。

我認爲這將是**(雙指針)

你想錯了。 &arr[1]不是雙指針。正如我已經提到的那樣,它是int (*)[3]

+0

然後,函數應該如何聲明?如果它是一個指向數組的指針,那麼函數返回類型爲'int *'會好嗎?但我仍然得到同樣的警告 –

+0

你對功能的返回類型有什麼看法?要返回一個'int'你聲明你的函數返回類型爲'int',因爲'int *'返回類型是'int *'for'int(*)[3]'返回類型的函數應該是什麼? – haccks

+0

我需要將類型轉換爲指針,因爲您無法按值返回數組? –