我有一个在函数中创建的数组,我想在不同的函数中使用它,但似乎无法弄清楚如何。
如果有帮助,这里是包含数组的函数。我想在不同的函数中使用 roll[]。
int roll_5_array(void)
{
int i = 0, roll[5]; //Declaring array
for (; i < 5; i = i + 1) //Repeat 5 times
{
int outcome = 0;
outcome = roll_die(); //Roll die
roll[i] = outcome;
}
}
以我目前的知识,我只能想出几个可能的解决方案:
您声明了一个具有自动存储持续时间的本地数组
int roll_5_array(void)
{
int i = 0, roll[5]; //Declaring array
退出功能后不会存活
如果你想从函数中返回它,你需要动态分配它,例如
int * roll_5_array(void)
{
int i = 0;
int *roll = malloc( 5 * sizeif( int ) );
//...
return roll;
}
为此,您需要包含标题
<stdlib.h>
.
您需要通过调用函数
free
使用指向分配数组的指针释放数组。
注意你的原始函数没有返回任何内容,尽管它的返回类型不是 void
int roll_5_array(void)
你可以通过两种方式做到这一点
int *func(void)
{
int *arr = malloc(5 * sizeof(*arr));
/* ... */
return arr;
}
int *func(void)
{
static int arr[5];
/* ... */
return arr;
}
或者通过将指针传递给指针。
void func(int **ptr)
{
int *arr = malloc(5 * sizeof(*arr));
/* ... */
*ptr = arr;
}
void func(int **ptr)
{
static int arr[5];
/* ... */
*ptr = arr;
}