在c中传递一个函数参数值NULL

时间:2017-10-28 18:30:04

标签: c function

我需要创建一个将数组拆分为2的函数。这里是参数 int splitarr(int * array,int ogsize,int size1,int * arr1,int * arr2) 我必须在函数调用之前创建具有数组的任务 - > arr1和arr2值必须为NULL,我必须在函数内创建数组。

1 个答案:

答案 0 :(得分:1)

你想要的不是传入null,而是传入一个指向指针的指针。您的函数签名应如下所示:

int splitarr(int *array, int ogsize, int size1, int **arr1, int **arr2);

注意双星。然后你的功能就是这样:

int splitarr(int *array, int ogsize, int size1, int **arr1, int **arr2) {
    int* a1 = malloc(size1 * sizeof(int));
    int* a2 = malloc((ogsize - size1) * sizeof(int));
    // perform some copying operations here
    *arr1 = a1;
    *arr2 = a2;
}

现在你打电话的时候:

int *resultOfSplit1;
int *resultOfSplit2;
splitarr(originalArr, originalSize, size1, &resultOfSplit1, &resultOfSplit2);

这会将新分配的数组存储在这两个变量中。