Использование указателя для сортировки выбора

Я пытаюсь использовать указатель на массив для выбора сортировки.

void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
    swap = false;
    for (int count = 0; count < (size - 1); count++)
    {
        if (*ptr[count] > *ptr[count + 1])
        {
            temp = *ptr[count];
            *ptr[count] = *ptr[count + 1];
            *ptr[count + 1] = temp;
            swap = true;
        }
    }
} while (swap);
}

Я получаю много ошибок, говоря неправильное направление, потому что при использовании * это должен быть указатель. Я использую это в других методах, хорошо, только у этого есть проблема. Это звонок, который я использую.

sort(arraySize, numArray);

все заявлено и работает другими способами.

5 ответов

Использование ptr[] вместо *ptr[] так как,ptr указатель и если используется с [] затем он возвращает элемент в этом месте, как это делает массив.

void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
    swap = false;
    for (int count = 0; count < (size - 1); count++)
    {
        if (ptr[count] > ptr[count + 1])
        {
            temp = ptr[count];
            ptr[count] = ptr[count + 1];
            ptr[count + 1] = temp;
            swap = true;
        }
    }
} while (swap);
}

Это правильная структура. Вы не должны использовать * при использовании обозначения указателя массива, использование имени указателя без '*' itslef относится к индексу 0 массива указателей

void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
    swap = false;
    for (int count = 0; count < (size - 1); count++)
    {
        if (ptr[count] > ptr[count + 1])
        {
            temp = ptr[count];
            ptr[count] = ptr[count + 1];
            ptr[count + 1] = temp;
            swap = true;
        }
    }
} while (swap);
}

Вот ошибки компиляции удаленной версии.

void sort(int size, int *ptr)
{
int temp;
bool swap;
do
{
    swap = false;
    for (int count = 0; count < (size - 1); count++)
    {
        if (ptr[count] > ptr[count + 1])
        {
            temp = ptr[count];
            ptr[count] = ptr[count + 1];
            ptr[count + 1] = temp;
            swap = true;
        }
    }
} while (swap);
}

Читайте также: C++ Использование указателей для функции выбора сортировки

Дополнительные примеры: http://www.codemiles.com/c-examples/c-selection-sort-t2916.html

*ptr[count] ничего не значит

ptr - указатель*ptr - значение - разыменованный

Ошибка в *ptr[count]это неправильный синтаксис для разыменования указателя.

Делать ptr[count]или же *(ptr + count)

Другие вопросы по тегам