我想创建一个从字符串派生的新整数数组。例如:从函数返回数组/指针
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