C中使用指针的数组的最大值和最小值
我尝试使用指针查找数组的最大值和最小值,但在输入值并显示它们之后,我的程序崩溃了,我不知道为什么。我的错误在哪里? 这是我的代码。如果删除minimaxim函数,程序就可以运行了 我刚开始学习动态分配和指针C中使用指针的数组的最大值和最小值,c,arrays,function,dynamic-memory-allocation,C,Arrays,Function,Dynamic Memory Allocation,我尝试使用指针查找数组的最大值和最小值,但在输入值并显示它们之后,我的程序崩溃了,我不知道为什么。我的错误在哪里? 这是我的代码。如果删除minimaxim函数,程序就可以运行了 我刚开始学习动态分配和指针 #include <stdio.h> #include <stdlib.h> // function to enter the real values of an array void pcitireVector(double *a, unsigned int n)
#include <stdio.h>
#include <stdlib.h>
// function to enter the real values of an array
void pcitireVector(double *a, unsigned int n)
{
int i;
for(i=0;i<n;++i)
{
printf("a(%d)", i);
scanf("%lf", &a[i]);
}
}
// function to display the array
void pafisareVector(double *a, unsigned int n)
{
int i;
for(i=0;i<n;++i)
{
printf("%lf",a[i]);
printf(" ");
}
}
// function which displays the minimum and the maximum of the array using pointers.
void minimmaxim(double *a, unsigned int n)
{
int i;
double *min=0, *max=0;
*min=a[0];
*max=a[0];
for(i=0;i<n;++i)
{
if(a[i]>*max)
{
*max=a[i];
}
else
{
if(a[i]<*min)
{
*min=a[i];
}
}
}
printf("minimul este %lf", *min);
printf("maximul este %lf", *max);
}
int main(void)
{
int n;
double *x;
printf("Baga-l pe n"); // enter the size of the array
scanf("%d", &n);
x=(double *)malloc(n*sizeof(double));
if(x==0)
{
printf("eroare la alocarea memoriei"); // error
exit(EXIT_FAILURE);
}
pcitireVector(x,n);
pafisareVector(x,n);
minimmaxim(x,n);
return 0;
}
#包括
#包括
//函数输入数组的实际值
void pCitRevert(双精度*a,无符号整数n)
{
int i;
对于(i=0;i它在这里崩溃:
double *min=0, *max=0;
您声明了指针,但尚未将它们指向任何位置。因此,如果min
和max
指针指向的位置未定义,则它们指向一些随机地址。然后,您尝试跳转到这些随机地址,并在那里设置导致崩溃的值
事实上,你根本不需要min,max作为指针,它们可以只是局部变量。这样做,你就会没事了:
double min, max;
min=a[0];
max=a[0];
for(i=0;i<n;++i)
{
if(a[i]>max)
{
max=a[i];
}
else
{
if(a[i]<min)
{
min=a[i];
}
}
}
printf("min = %lf", min);
printf("max = %lf", max);
double-min,max;
min=a[0];
max=a[0];
对于(i=0;imax)
{
max=a[i];
}
其他的
{
如果(a[i]