【发布时间】:2014-12-13 11:57:44
【问题描述】:
我的代码编译良好,并被执行。但是在输入 sortType 值后出现此错误:“ALINUR_CAGLAYAN_LAB6.exe 中 0x52a56af2 (msvcr90d.dll) 处的未处理异常:0xC0000005:访问冲突写入位置 0x00000000。”
这是我的代码:
#include <stdio.h>
int sorting(int *liverpool8, int *besiktas0, int *hahaha);
void main()
{
int *numbers;
int length;
int sortType=0;
int i;
printf("Enter the length of array:");
scanf("%d",&length);
numbers = (int*)malloc(length*sizeof(int));
for (i = 0; i < length; ++i)
{
printf("%d. element: ", i+1);
scanf("%d", &numbers[i]);
}
printf("\nPlease select one of the following functions:\n1)Ascending order\n0)Descending order");
scanf("%d", sortType);
sorting(*numbers, &length, &sortType);
printf("The numbers arranged in the order as you entered are given below\n");
for (i = 0; i < length; ++i)
{
printf("%d\n", numbers[i]);
}
system("pause");
}
int sorting(int *numbers, int *length, int *sortType)
{
int j, i, a;
if(sortType == 1)
{
for (i = 0; i < length; ++i)
{
for (j = i + 1; j < length; ++j)
{
if (numbers[i] > numbers[j])
{
a = numbers[i];
numbers[i] = numbers[j];
numbers[j] = a;
}
}
}
}
else if(sortType == 0)
{
for (i = 0; i < length; ++i)
{
for (j = i + 1; j < length; ++j)
{
if (numbers[i] < numbers[j])
{
a = numbers[i];
numbers[i] = numbers[j];
numbers[j] = a;
}
}
}
return *numbers;
}
}
【问题讨论】:
-
sorting(*numbers, &length, &sortType);-->>sorting(numbers, &length, &sortType);BTW:编译器应该至少给出警告。 -
最好不在不需要的地方使用指针。就像在您的排序功能中使用
int *length一样。你会在运行它时得到Segmentation fault,因为你试图使用你的lengthpointer 而不是value。与sortType相同。您应该阅读更多关于指针以及如何使用它的信息。 -
@wildplasser 我仍然遇到同样的错误。滕文;这是一个硬件,他们希望我们使用它们。我需要为此付出更多努力,我知道。我还是个新手。
标签: c