簡體   English   中英

找不到我的 0 1 2 排序代碼錯誤? 分段故障

[英]Can't find error with my code for sort 0 1 2? Segmentation fault

你能告訴我我的代碼有什么問題嗎? 我遇到了這個特定輸入(以及更多)的分段錯誤,但很少有人運行良好?
我錯過了什么?

void sortArr(int a[], int n)
{
    int x,y;
    for(int i=0;i<n;i++)
    {
        if(a[i]==0)
        {
            x++;
        }
        else if(a[i]==1)
        {
            y++;
        }
    }
    int i;
    for(i=0;i<x;i++)
    {
        a[i]=0;
    }
    for(i=x;i<(x+y);i++)
    {
        a[i]=1;
    }
    for(i=(x+y);i<n;i++)
    {
        a[i]=2;
    }
    // Print the sorted array
    printArr(a, n);
}

 
// Driver code
int main()
{
    int arr[] = {0,2,1,2,0,2,2,0,0,1};
    int n = sizeof(arr) / sizeof(int);
 
    sortArr(arr, n);
 
    return 0;
}

在使用它們之前初始化您的變量:

int x = 0, y = 0;

如果您不初始化變量,那么它們將具有不確定的值,這可能會導致未定義的行為,並且在某些情況下,這還會導致錯誤。 (例如使用 MSVC)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM