为什么我不能指定i等于0?

时间:2019-05-05 18:13:14

标签: c

在此程序中,如果我分配了i=0,那么为什么我得到-8320909而不是有序数组,但是如果我将值分配给1,它就可以正常工作吗?那么,是什么导致了这一改变?

#include <stdio.h>

void Bubblesort(int *A, int n) {
    int i, j, temp;
    for (i = 1; i <= n - 1; i++) {
        for (j = 0; j <= n - i - 1; j++) {
            if (A[j] > A[j + 1]) {
                temp = A[j];
                A[j] = A[j + 1];
                A[j + 1] = temp;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:3)

i为0时,当j <=n-i - 1时条件j == n - 1仍然为真。但是,您在索引A的{​​{1}}处建立了索引,该索引比数组末尾晚了一个。

答案 1 :(得分:0)

您还需要从in - 1互斥,也要从jn - i - 1互斥,否则您将越界并调用未定义的行为。所以改变:

i<=n-1;

i < n - 1;

j <=n-i - 1;

j < n - i - 1;