2017-10-28 103 views
0

我需要創建將陣列分成2.這裏的參數 INT splitarr的函數(INT *陣列,INT ogsize,INT尺寸1,INT * ARR1,INT * ARR2) 我有數組的任務不能在函數調用之前創建 - > arr1和arr2的值必須爲NULL,我必須在函數內部創建數組。傳遞函數參數值NULL在C

+0

'size1'是什麼? – coderredoc

+0

size1是分割數組的大小點,如果size1 = 3,則第一個數組有3個元素,第二個元素有其餘 –

回答

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); 

這將存儲在那些兩個變量的新分配的數組。