分段故障帮助,菜鸟错误?

时间:2014-02-16 21:42:26

标签: c main

这是一项学校作业。

基本问题是获取大量数字,在其上实现多种不同类型的shell排序,分析复杂性等等。

我有一个使用选择排序编写的shell排序(我知道它效率低,这就是重点) 但我在测试它时遇到了麻烦。

我的主文件名为sorting_main.c,函数defs在sorting.c。

我编译然后使用这些命令运行它。

gcc -Werror -Wall -Wshadow -O3 sorting.c sorting_main.c -o proj1

项目完成后,我将能够使用此命令运行它......

./proj1 s input.txt seq.txt output.txt

我现在可以运行它,如果我在我的主要手动定义测试参数,终端只有./proj1。这就是我陷入困境的地方,我不知道我是否在做一些事情上做错了测试,或者我的实现是否存在致命缺陷。 我的目标是测试我的选择排序...... 这是我的主要内容:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>

//Function Declarations////
long *Load_File(char *Filename, int *Size);
int Save_File(char *Filename, long *Array, int Size);
void Shell_Insertion_Sort(long *Array, int Size, double *N_Comp, double *N_Move);
void Shell_Selection_Sort(long *Array, int Size, double *N_Comp, double *N_Move);
int Print_Seq(char *Filename, int Size);


int main()
{



long int  *Array[11];
 *Array[0]=9;
 *Array[1]=80;
 *Array[2]=4;
 *Array[3]=1;
 *Array[4]=5;
 *Array[5]= 3;
 *Array[6]= 7;
 *Array[7]=15;
 *Array[8]= 9;
 *Array[9]= 5;
 Shell_Selection_Sort(Array[10],11,0,0);
 /*
 int i = 0;
 for(i=0;i<=10;i++)
   {
     printf("%li\n",*Array[i]);
   }
 */
  return 0;
}

同样,我在终端中使用此命令进行编译:

gcc -Werror -Wall -Wshadow -O3 sorting.c sorting main.c -o proj1

我只收到2条警告,说我还没有使用计算值(预期)

然后我用这个来运行:

./proj1

有没有人看到我会在

中收到段错误的原因
#0  0x000000000040096b in Shell_Selection_Sort ()
#1  0x00000000004005d7 in main ()

我觉得这应该是一个简单的错误...

1 个答案:

答案 0 :(得分:3)

你正在声明一个指针数组。

声明数组或指针(如果声明指针,则需要malloc一些内存)。

在你的情况下,你应该声明一个数组。

long Array[11];

存储此类元素

Array[2]=4;
Array[3]=1;

long Array[11]具有long *Array的签名,因此它将使用您正在调用的函数进行编译。

现在对于那些double *个参数,你将不得不写一些比较函数......