如何通过引用将数组作为函数参数传递,这样我就可以为它分配内存然后返回它。我已经按照例行程序返回了另一个rarray。
int main(){
float * array_in = NULL;
float * data = Fill_Array(&array_in);
return 0;
}
float * Fill_Array(float * array)
{
array = malloc(sizeof(float*));
*array[1] = 10;
float * return_array = malloc(sizeof(float*));
return return_array;
}
答案 0 :(得分:2)
我想你想要这样的东西:
#include <stdio.h>
#include <stdlib.h>
void
Fill_Array (float **pArray)
{
*pArray = malloc (sizeof (float) * 100); /* 100 = number of items */
(*pArray)[0] = 1.0;
(*pArray)[1] = 2.0;
return;
}
int
main ()
{
float *array_in = NULL;
Fill_Array (&array_in);
/* do something here */
free (array_in);
return 0;
}
在传递指针而不是粗制副本的意义上,数组总是通过引用传递。如果要在函数中进行分配,则需要将指针传递给指针。
答案 1 :(得分:0)
这段代码搞砸了。我不知道该怎么办。
首先,您可以传递这样的数组:
Fill_Array(array_in);
但是这段代码不起作用。首先,Fill_Array
做的第一件事是通过用新分配的内存块覆盖变量来抛弃值。
其次,您只分配了足够的内存或指向浮点数的指针。将浮点数写入内存返回是不安全的。
最后,您再次拨打malloc()
。通过调用free()
释放任何内存的位置在哪里?这导致内存泄漏。
您需要更好地定义您要执行的操作,然后重新开始。
答案 2 :(得分:0)
另一种变体。这个没有内存泄漏。
您可以创建任意数量的任何维数组。 只是不要忘记成对工作&#34;创建 - 破坏&#34;
#include <stdio.h>
#include <stdlib.h>
float *CreateArray (int N)
{
float *arr = malloc (sizeof (float) * N);
for (int i = 0; i<N; i++)
arr[i] = 0.0f;
return arr;
}
void DestroyArray (float *arr)
{
free(arr);
}
int main ()
{
int N = 10; /* number of items you need this time*/
float *arr = CreateArray (N);
//...do something
DestroyArray (arr);
//.......
return 0;
}