我有一個二維數組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
我有一個二維數組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
那麼會是什麼這種類型?
&arr[1]
的&arr[1]
類型是int (*)[3]
,即,它是類型的指針爲3點的整數陣列。
我認爲這將是
**
(雙指針)
你想錯了。 &arr[1]
不是雙指針。正如我已經提到的那樣,它是int (*)[3]
。
然後,函數應該如何聲明?如果它是一個指向數組的指針,那麼函數返回類型爲'int *'會好嗎?但我仍然得到同樣的警告 –
你對功能的返回類型有什麼看法?要返回一個'int'你聲明你的函數返回類型爲'int',因爲'int *'返回類型是'int *'for'int(*)[3]'返回類型的函數應該是什麼? – haccks
我需要將類型轉換爲指針,因爲您無法按值返回數組? –
閱讀[comp.lang.c常見問題](http://www.c-faq.com)的第6部分。你可能想避免使用「double pointer」這個短語。它也可以指代'double *'類型。 –
然後閱讀[this](http://stevenkobes.com/ctest.html) – user3125280
@ user3125280 - 這個建議_really_意在幫助什麼嗎? – ryyker