Я пробовал пару раз, и я не могу заставить свой цикл for выполнять больше одной итерации.Проект требует, чтобы я использовал переменные-указатели в качестве аргумента для программы пузырьковой сортировки.Я не включаю весь код (т. Е. Я опускаю массив ввода и операцию печати, поскольку проблема существует в самом коде сортировки пузырьков).
Я пробовал различные версии этого кода,а также вменяя параметры печати в различных областях в моем коде.Это заставило меня понять, что мое значение для моей переменной указателя «i» сразу превышает самый большой адрес в моем массиве.По некоторым причинам адреса массива принимаются как отрицательное значение.Я не уверен, как решить эту проблему.
int arr[] = { 64, 34, 25, 12, 22, 11, 90 };
int n = ARRAY_SIZE(arr);
bubbleSort(arr, n);
[SKIPPING CODE, ARRAY SIZE IS 7]
void bubbleSort(int *arr, int n) {
int *i, q;
if (n == 1) {
return;
} else {
for (i = arr; i < (arr + n); i++) {
if (*arr > *(arr + 1)) {
printf("This: %d, also value of i: %d \n", *arr, *i);
swap(*arr, *(arr + 1));
printf("This: %d, that %d, and i: %d \n", arr, (arr + n), i);
}
}
q = n - 1;
bubbleSort(arr, q);
}
}
Из первого оператора печати, у меня есть значение, что "* arr" и "* i" оба 64. Я пытался прежде, чтобы увидеть значения* arr и * arr + 1 после функции подкачки, и они были правильными (34 и 64 соответственно).
Вторая функция печати указывает, что i и arr оба равны "-13312", а arr + n равенна «-13284.»
Моя функция печати, которая здесь не указана, просто печатает семь 34-х строк подряд.