|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include<stdio.h>
//通过子函数和指针来求三个数的最大值
int fun(int *x,int *y)
{
int z;
if(*x<*y)
z=*y;
else z=*x;
return z;
}
void main()
{
int *p;
int *q;
int *s;
printf("输入三个数字:\n");
scanf("%d,%d,%d",p,q,s);
printf("%d",fun(p,fun(q,s)));
}
这个程序哪里错了???应该怎么改
本帖最后由 jackz007 于 2019-1-26 22:17 编辑
楼主的代码存在有 2 个问题:
1. 指针必须先赋值后使用,程序中三个指针型变量 p、q、s 并未在指向任何确定变量之前就被用来储存数据,这是大忌,会直接导致程序异常。
2. 看看下面这一句:
printf("%d",fun(p,fun(q,s)));
fun() 要求两个输入参数都是指针型的,而返回的却不是指针,而是数值,也就是说,fun(q,s) 并不能被视作一个指针,这样,fun(p,fun(q,s)) 就出问题了。
应该这样修改:
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- int * max(int * x , int * y)
- {
- int * z ;
- z = x ;
- if(* y > * x) z = y ;
- return z ;
- }
- int main(void)
- {
- int p , q , s ;
- printf("输入三个数字:") ;
- scanf("%d %d %d" , & p , & q , & s) ;
- printf("%d\n" , * max(& p , max(& q , & s))) ;
- }
复制代码
楼主不妨试试看
|
|