找不到我的 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 为例)
你能告诉我我的代码有什么问题吗?我遇到了这个特定输入(以及更多)的分段错误,但很少 运行 没问题?
我缺少什么?
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 为例)