You are passing a pointer to an array, rather than passing an array of pointers expected by your function.
Your function expects an array of list pointers, because it has both an asterisk and a pair of brackets:
List *list[] // <<== This means "an array of pointers to elements of type List"
To pass this function an array of pointers, declare an array of pointers in the main, and make the call:
void main() {
List *list[10];
// intitialize all 10 list pointers randomly in ascending order.
for (int i = 0 ; i != 10 ; i++) {
list[i] = malloc(...); // Initialize list at position i
}
min_heapify(list,10); // Remove the ampersand
}
If you were looking to pass an array of lists, keep only the asterisk or the square brackets:
void min_heapify(List list[],int size);
or the equivalent
void min_heapify(List *list,int size);
Remove the ampersand from the call in the main to compile this properly:
void main() {
List list[10]; // intitialize all 10 lists randomly in ascending order.
min_heapify(list,10); // Remove the ampersand
}