首页 > 解决方案 > 未初始化的嵌套for循环值

问题描述

我知道问题听起来很愚蠢,我真的不知道这段代码有什么问题?

void sort(int *arr, int size)
{
    int min = 0;
    for (int i = 0; i < size - 1; i++)
    {
        for (int j = i; i < size; j++)
        {
            if (arr[min] > arr[j])
            {
                min = j;
            }
        }
        if (min != i)
        {
            Swap(&arr[i], &arr[min]);
        }
    }    
}

下面的代码应该排序,arr但它给出了分段错误。我通过调试器运行了这段代码,它显示了jat line的值

        for (int j = i; i < size; j++)

类似3234(未初始化)和程序结束。但j应该是0

调试器屏幕短

标签: cfor-loopinitialization

解决方案


在您的第二个for循环中,它应该是j < size,而不是i < size


推荐阅读