C语言中的分段错误返回
程序编译良好,但运行时返回“分段错误”。请帮忙。谢谢忽略其他三个函数。程序应该使用指针和指针算法填充数组并打印数组中的值C语言中的分段错误返回,c,segmentation-fault,C,Segmentation Fault,程序编译良好,但运行时返回“分段错误”。请帮忙。谢谢忽略其他三个函数。程序应该使用指针和指针算法填充数组并打印数组中的值 #include <stdio.h> void FillArray ( int *array, int size ); void PrintArray ( int *array, int size ); //void BubbleSort ( int *array, int size ); //void SelectionSort ( int *array,
#include <stdio.h>
void FillArray ( int *array, int size );
void PrintArray ( int *array, int size );
//void BubbleSort ( int *array, int size );
//void SelectionSort ( int *array, int size );
//void Swap ( int *x, int *y );
#define SIZE 20
int main (void)
{
int NumList [SIZE];
FillArray(NumList, SIZE);
PrintArray (NumList, SIZE);
}
void PrintArray (int *array, int size)
{
int i;
for (i=0; i<100; i++)
{
printf("%d \t", *(array+i));
}
}
void FillArray(int *array, int size)
{
int i;
srand(time(NULL));
for (i=0; i<100; i++)
{
*(array+i)= rand()%101;
}
return;
}
#包括
void FillArray(int*array,int size);
void printary(int*array,int size);
//void BubbleSort(int*数组,int大小);
//void SelectionSort(int*数组,int大小);
//无效交换(int*x,int*y);
#定义尺寸20
内部主(空)
{
int NumList[大小];
FillArray(NumList,SIZE);
打印阵列(NumList,SIZE);
}
无效打印数组(整数*数组,整数大小)
{
int i;
对于(i=0;i您的数组仅包含20个条目,但您试图访问索引为20到99的无效条目。您正在尝试访问绑定外的元素。下面是一个快速修复方法:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 100
void FillArray ( int *array, int size );
void PrintArray ( int *array, int size );
int main (void)
{
int NumList [SIZE];
FillArray(NumList, SIZE);
PrintArray (NumList, SIZE);
}
void PrintArray (int *array, int size)
{
int i;
for (i=0; i<100; i++)
{
printf("%d \t", array[i]);
}
}
void FillArray(int *array, int size)
{
int i;
srand(time(NULL));
for (i=0; i<100; i++)
{
array[i] = rand() % 101;
}
}
#包括
#包括
#定义大小100
void FillArray(int*array,int size);
void printary(int*array,int size);
内部主(空)
{
int NumList[大小];
FillArray(NumList,SIZE);
打印阵列(NumList,SIZE);
}
无效打印数组(整数*数组,整数大小)
{
int i;
对于(i=0;i您正在尝试访问绑定外的元素。下面是正确的方法。
虽然您将数组的大小作为另一个参数传递,但并没有使用它,而是使用了一个更大的100,它是硬编码的
#include <stdio.h>
void FillArray ( int *array, int size );
void PrintArray ( int *array, int size );
#define SIZE 20
int main (void)
{
int NumList [SIZE];
FillArray(NumList, SIZE);
PrintArray (NumList, SIZE);
}
void PrintArray (int *array, int size)
{
int i;
for (i=0; i < size; i++)
{
printf("%d \t", *(array+i));
}
}
void FillArray(int *array, int size)
{
int i;
srand(time(NULL));
for (i=0; i < size; i++)
{
*(array+i)= rand()%101;
}
return;
}
#包括
void FillArray(int*array,int size);
void printary(int*array,int size);
#定义尺寸20
内部主(空)
{
int NumList[大小];
FillArray(NumList,SIZE);
打印阵列(NumList,SIZE);
}
无效打印数组(整数*数组,整数大小)
{
int i;
对于(i=0;i
你做过任何调试吗?这很简单。你应该使用valgrind之类的工具来检测内存泄漏。“忽略其他三个功能。”你应该在发布之前删除无关内容,而不是告诉我们忽略它,这只是懒惰。为什么说21到99?为什么不说0到99(所有访问的索引)或20到99(是否访问了所有无效的)?