我想創建一個從字符串派生的新整數數組。例如:從函數返回數組/指針
char x[] = "12334 23845 32084";
int y[] = { 12334, 23845, 32084 };
我無法理解如何從一個函數返回一個數組(我的理解是不可能的)。
我最初試圖:
/* Convert string of integers into int array. */
int * splitString(char string[], int n)
{
int newArray[n];
// CODE
return (newArray);
}
int main(void)
{
int x[n] = splitString(string, n);
return (0);
}
後來我才知道,你不能做到這一點。
指針如何在函數中工作?
謝謝。
這是首選的方法。在99%的情況下,從函數返回任何類型的指針都沒有意義。 – Lundin 2011-03-21 14:40:34
對。正如其他答案中提到的那樣,你可以在你的函數中使用'malloc(n * sizeof(int))'來分配內存並返回該指針,但是你總是必須記住最終'釋放'內存。由於'malloc'隱藏在一個不同抽象層次的函數中,因此你很容易忘記。因此,最好分配內存並將指針傳遞給函數,使用結果,然後釋放內存,以便可以輕鬆地將「malloc」與「free」匹配起來。 – JCooper 2011-03-21 14:56:48
@JCooper:調用者也可以從池中,堆棧中或其他任何他想要放置的內存中分配內存,但函數不能。 – Puppy 2011-03-21 15:24:53