它运行正常,但是当我键入./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]);
}
}
答案 0 :(得分:2)
尝试稍微更改一下代码
int NumList[SIZE];
FillArray (NumList, SIZE);
PrintArray (NumList, SIZE);
通过编写int *NumList[SIZE]
,您实际上声明了一个int*
数组 - 指向int
的指针。不是你想要的,对吧?然后你写FillArray (*NumList, SIZE);
。它取消引用你的数组,结果是它的第一个元素int*
,你传递给函数的元素。并且您尝试为其元素分配值。因此SEG错误。