程序正在出现分段错误

时间:2016-03-07 23:41:06

标签: c

它运行正常,但是当我键入./a.out时,它会一直说出分段错误并结束程序。我很新,想要一些帮助。我想把这两个过程保持为有自己的功能,我只是迷失在我做错的事情上......

我想用0到101的随机数填充列表,并使用指针打印列表

#include<stdio.h>
#define SIZE 20
void FillArray (int * , int);
void PrintArray (int * , int);


int main(void)
{
int *NumList[SIZE];

FillArray (*NumList, SIZE);
PrintArray (*NumList, SIZE);

return 0;
}

void FillArray (int *array, int size)
{
int a;
for(a=0;a<size;a++)
    {
    array[a] = (rand() % 101);
    }

}   

void PrintArray (int *array, int size)
{
int a;
for(a=0;a<size;a++)
    {
    printf("%d ", array[a]);
    }
}

1 个答案:

答案 0 :(得分:2)

尝试稍微更改一下代码

int NumList[SIZE];
FillArray (NumList, SIZE);
PrintArray (NumList, SIZE);

通过编写int *NumList[SIZE],您实际上声明了一个int*数组 - 指向int的指针。不是你想要的,对吧?然后你写FillArray (*NumList, SIZE);。它取消引用你的数组,结果是它的第一个元素int*,你传递给函数的元素。并且您尝试为其元素分配值。因此SEG错误。