[英]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.