我需要创建一个将数组拆分为2的函数。这里是参数 int splitarr(int * array,int ogsize,int size1,int * arr1,int * arr2) 我必须在函数调用之前创建具有数组的任务 - > arr1和arr2值必须为NULL,我必须在函数内创建数组。
答案 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);
这会将新分配的数组存储在这两个变量中。