我似乎無法理解爲什麼這不起作用。返回數組C++
全局變量:
int genericSet[] = {1,2,3,4};
int main()...
int* function() {
return &genericSet;
}
它爲什麼給我一個錯誤,而試圖返回這個數組?是因爲它是一個全局變量,如果有的話,爲什麼這麼重要?我通常會如何返回一個靜態聲明的數組?我意識到這是額外的工作返回一個全局變量,但它實際上是否阻止了這一點?我只是用它作爲佔位符,並一直出現錯誤。
我似乎無法理解爲什麼這不起作用。返回數組C++
全局變量:
int genericSet[] = {1,2,3,4};
int main()...
int* function() {
return &genericSet;
}
它爲什麼給我一個錯誤,而試圖返回這個數組?是因爲它是一個全局變量,如果有的話,爲什麼這麼重要?我通常會如何返回一個靜態聲明的數組?我意識到這是額外的工作返回一個全局變量,但它實際上是否阻止了這一點?我只是用它作爲佔位符,並一直出現錯誤。
您的函數類型與返回類型不匹配。你的函數是int *,但是你返回的是int **類型。
現貨。需要'返回genericSet'而不是'return&genericSet'。 – tylerl 2011-05-12 02:44:40
謝謝,但有一個問題,當我嘗試返回地址爲&genericSet並將返回值設置爲int(-asterisk在這裏不會顯示)[4] funciton ...應該這個工作返回的地址該數組,因爲它不會讓我使用int * - 另一個星號在這裏不會顯示任何 - 作爲&genericSet的返回值: -/ – rubixibuc 2011-05-12 02:57:37
@rubixibuc將是'int(* function())[4] {return&genericSet; }' – Cubbi 2011-05-12 03:05:44
您返回一個變量的地址,該變量是一個數組。
它可以被看作是返回指針的指針。 你不需要&
,只需返回數組。
因此,要麼:
int ** function()
{
return (int **)&genericSet;
}
或:
int * function()
{
return genericSet;
}
genericSet
本身就已經是一個int *
; &genericSet
是int **
,指向指向int
的指針。
-1錯誤類型 – 2011-05-12 05:32:24
只是返回genericSet而沒有前面的&。它已經是一個指針類型,因爲它具有[]
作爲其類型的一部分。
C++中的指針/數組的相似性很重要,因此我建議您在閱讀該語言的過程中閱讀它。
我不知道爲什麼大家都在回答這個問題& genericSet是一個int **;它不是。澄清:
int genericSet[] = {1,2,3,4};
typedef int (*ArrayPtr)[4];
int* f1() { return genericSet; }
ArrayPtr f2() { return &genericSet; }
+1不欺騙OP。 – 2011-05-12 05:32:06
它可能有助於閱讀http://stackoverflow.com/questions/4810664/how-do-i-use-arrays-in-c有關數組和指針之間的區別。 – Cubbi 2011-05-12 03:00:39