|
10鱼币
我看的老版小甲鱼老师的视频上面有一个用指针变量来求10个数最大最小值,但我做的这个它max_min_value 函数不知道什么地方出了问题,max和min的判断循环不起作用,p到哪,max,min跟到哪,可能是定义指针变量时的问题
#include <stdio.h>
int *max, *min;
void max_min_value(int *array, int n);
void main()
{
int i, number[10];
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);
}
void max_min_value(int *array, int n)
{
int *p, *array_end;
array_end = array + n;
min = array;
max = array;
for(p = (array+1); p < array_end; p++)
{
if(*p > *max)
{
*max = *p;
}
else if(*p < *min)
{
*min = *p;
}
}
}
这是源代码,望高人指教
指针版的也解决了
直接上代码
- #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是函数,不是常量表达式
|
最佳答案
查看完整内容
指针版的也解决了
直接上代码
还是解释一下,程序里
int *min = NULL;
min = (int *)malloc(1 * sizeof(int));
*min = *array;
这三句都是必不可少的,对应的步骤是定义全局变量,分配内存空间,赋值
定义时候之所以要指向NULL,就是为了避免出现上面所说的未初始化的指针变量,
分配空间你可以参考更多malloc的资料,这个格式也是常用的一种
还有就是不能把定义变量和分配空间缩减到一起
int *min = (int *)mallo ...
|