Я пишу программу для сортировки 3 целых числа в порядке возрастания, используя указатели и я закодированы следующие:Сортировка в порядке возрастания с использованием указателей
#include <stdio.h>
void compare_and_swap(int *const a, int *const b) {
int t;
if (*a > *b) {
t = *a;
*a = *b;
*b = t;
}
void sort (int * const pint1, int * const pint2, int *const pint3)
{
if (*pint1 > *pint2){compare_and_swap(pint1, pint2);}
if (*pint2 > *pint3){compare_and_swap(pint2, pint3);}
if (*pint1 > *pint3){compare_and_swap(pint1, pint3);}
}
int main (void)
{
void sort (int * const pint1, int * const pint2, int * pint3);
int i1 = -5, i2 = 66, i3 =77, *p1 = &i1, *p2 = &i2, *p3 = &i3;
int x;
printf ("i1 = %i, i2 = %i, i3=%i \n", i1, i2,i3);
sort (p1, p2,p3);
printf ("i1 = %i, i2 = %i, i3= %i \n", x);
return 0;
}
Выходной сигнал я получаю некоторые значения для мусора:
i1 = -5, i2 = 66, i3=77
i1 = 0, i2 = 1427618548, i3= -5
Любая причина использовать постоянный определитель? – ameyCU
Также вы печатаете неинициализированную переменную 'x'. Что бы вы ожидали? – ameyCU
Я не понимаю, в чем ваш вопрос. У вас даже нет правильного аргумента во второй printf ... –