源代码为:
- /*提示输入两个数,并返回两个数中大数的地址*/
- #include<stdio.h>
- int *max(int n1 , int n2); //函数声明
- int main()
- {
- //提示输入两个数
- int a , b ;
- printf("请输入两个数");
- //接受输入的数字
- scanf('%d , %d' , &a , &b);
- //接下来调用指针型函数
- int * p ;
- p=max( a , b) ; //调用max。返回大数地址,并赋值给指针变量p
- printf("max = %d\n" , *p); 打印p指向的数据
- return 0;
- }
- int *max(int n1 , int n2) // 返回形参最大数的地址(指针)
- {
- int *z;
- z = x>y ? &x : &y ;
- return z;
- }
复制代码
代码修改了一下:
- #include<stdio.h>
- int *max(int n1 , int n2); //函数声明
- int main()
- {
- //提示输入两个数
- int a , b ;
- printf("请输入两个数");
- //接受输入的数字
- scanf("%d , %d" , &a , &b);
- //接下来调用指针型函数
- int p ;
- p=max( a , b) ; //调用max。返回大数地址,并赋值给指针变量p
- printf("%d %d\n",a,b);
- printf("max = %d\n" , p); // 打印p指向的数据
- return 0;
- }
- int *max(int n1 , int n2) // 返回形参最大数的地址(指针)
- {
- int z;
- z = n1>n2?n1:n2 ;
- return z;
- }
复制代码
主要错误有两个:一个是格式上的错误scanf括号内是' '改为" "(这个是不漏写了);
另一个是思路问题,在原代码中,你的程序编译无法通过,而且在用的方法上存在问题。
首先,原代码中定义一个int *p;p=max(a,b);用指针函数将返回的地址付给指针变量p是可以的。
但是在max的指针函数的编写上变量n1和n2在函数中没有使用,而且变量x,y都没有在文件中做出定义(这个是不是函数写错了啊)。
|