指针版的也解决了
直接上代码#include <stdio.h>
#include <stdlib.h>
int *min = NULL;
int *max = NULL;
void max_min_value(int *array, int n);
void main()
{
int i, number[11];
printf("enter 10 integer numbers:\n");
for(i = 0; i < 10; i++)
{
scanf("%d", &number[i]);
}
max_min_value(number, 10);
printf("max = %d, min = %d", *max, *min);
system("pause");
}
void max_min_value(int *array, int n)
{
int *p, *array_end;
array_end = array + n;
min = (int *)malloc(1 * sizeof(int));
max = (int *)malloc(1 * sizeof(int));
*max = *array;
*min = *array;
for(p = (array); p < array_end; p++)
{
if(*p > *max)
{
*max = *p;
}
if(*p < *min)
{
*min = *p;
}
}
}
还是解释一下,程序里
int *min = NULL;
min = (int *)malloc(1 * sizeof(int));
*min = *array;
这三句都是必不可少的,对应的步骤是定义全局变量,分配内存空间,赋值
定义时候之所以要指向NULL,就是为了避免出现上面所说的未初始化的指针变量,
分配空间你可以参考更多malloc的资料,这个格式也是常用的一种
还有就是不能把定义变量和分配空间缩减到一起
int *min = (int *)malloc(1 * sizeof(int));
在main函数内部的局部变量可以这样搞,但是对于全局变量(main以外)
初始化时候必须是常量表达式,如果写成这个样子编译器会报一个错误“常量表达式中不允许函数调用”
因为malloc是函数,不是常量表达式
|