не работает qsort c++

код должен сортировать числа, но выдаёт ошибку. введите сюда описание изображения

#include <iostream>
#include <cstdlib>

using namespace std;

int comp(const int* i, const int* j)
{
    return *i - *j;
}



int main() {
    int n;
    bool compare=true;
    cin >> n;
    int* arr = new int[n];
    for (int i = 0; i < n; i++)
    {
        cin >> arr[i];
    }
        qsort(arr, sizeof(int), comp);
    for (int j = 0; j < n; j++)
    {
        cout << arr[j] << " ";
    }
}

Ответы (1 шт):

Автор решения: Harry

Потому что в qsort вторым параметром передается количество элементов, размер элемента передается третьим параметром, а компаратор только четвертым...

qsort(arr, n, sizeof(int), comp);

Для тех, кто в танке: по ссылке ясно видно, что компаратор должен быть

int comp(const void* i, const void* j)

Обратите внимание на void. Но это не имеет отношения к вашему вопросу, это уже другая ошибка.

Разжевывая как для милиционера - медленно и два раза:

int comp(const void* i, const void* j)
{
    return *(const int*)i - *(const int*)j;
}
→ Ссылка