Я пытаюсь передать по ссылке (точнее, указателем) между несколькими функциями. Я понимаю основы прохождения по ссылке и успешно справился с этим для отдельных функций. Кажется, я не понимаю, как передать одну переменную по ссылке по нескольким функциям.C: Передача по ссылке между несколькими функциями?
int main(int argc, char const *argv[])
{
int* quicksort(int*, int, int, long long int*);
int *sortedList = malloc(MAX_LENGTH * sizeof(int));
long long int compCount=0;
sortedList = quicksort(LIST, 0, MAX_LENGTH-1, &compCount);
printf("%lld", compCount);
return 0;
}
int* quicksort(int* A, int l, int r, long long int* compCount) {
int partition(int*, int, int, long long int*);
int p;
if (!(l < r)) {
return A;
}
else {
p = partition(A, l, r, compCount);
quicksort(A, l, p-1, compCount);
quicksort(A, p+1, r, compCount);
}
return A;
}
int partition(int *A, int l, int r, long long int* compCount) {
int i, j, p, tmp;
i = l + 1;
p = l;
for (j = l + 1; j <= r; j++) {
if (A[j] < A[p]) {
tmp = A[i];
A[i] = A[j];
A[j] = tmp;
i = i+1;
}
}
compCount += r-l;
tmp = A[l];
A[l] = A[i-1];
A[i-1] = A[l];
return i-1;
}
Получаю значение compCount = 0 в конце этого. Я знаю, что могу решить эту проблему, используя глобальную переменную, но я бы предпочел не использовать глобальную.
Как я неправильно использую свои указатели?
'compCount + = г-л;' должно быть '* compCount + = г-л; ' – IdeaHat
' sortedList = quicksort (LIST, 0, MAX_LENGTH-1, & compCount); 'вероятно, утечка памяти. – BLUEPIXY