|
|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 mfshik 于 2012-3-18 20:35 编辑
遇到了一个很纠结的的问题 希望某位大神帮我解答下
为啥这样编译不通过
- #include <stdio.h>
- int process( int, int, int(*fun)() );
- int max(int,int);
- int min(int,int);
- int sub(int,int);
- int main(void)
- {
- int a=0,b=0;
- printf("Please enter two numbers:");
- scanf("%d,%d",&a,&b);
-
- printf("max=%d\n",process(a,b,max));
-
-
- printf("min=%d\n",process(a,b,min));
- printf("sub=%d\n",process(a,b,sub));
-
- return 0;
- }
- int process( int a, int b, int (*fun)())
- {
- return (*fun)(a,b);
- }
- int max(int a,int b)
- {
- return a>b?a:b;
- }
- int min(int a,int b)
- {
- return a<b?a:b;
- }
- int sub(int a,int b)
- {
- return a-b;
- }
复制代码
只有改为下面这样才可以- #include <stdio.h>
- int process( int, int, int(*fun)(int,int) );
- int max(int,int);
- int min(int,int);
- int sub(int,int);
- int main(void)
- {
- int a=0,b=0;
- printf("Please enter two numbers:");
- scanf("%d,%d",&a,&b);
-
- printf("max=%d\n",process(a,b,max));
-
-
- printf("min=%d\n",process(a,b,min));
- printf("sub=%d\n",process(a,b,sub));
-
- return 0;
- }
- int process( int a, int b, int (*fun)(int,int))
- {
- return (*fun)(a,b);
- }
- int max(int a,int b)
- {
- return a>b?a:b;
- }
- int min(int a,int b)
- {
- return a<b?a:b;
- }
- int sub(int a,int b)
- {
- return a-b;
- }
复制代码 但为什么鱼哥视频中 这样却可以编译通过- /***********************************************************/
- /* 设一个函数process,在调用它的时候,每次实现不同的功能。*/
- /* 输入a和b两个数,第一次调用process时找出a和b中大者,*/
- /* 第二次找出其中小者,第三次求a与b之和。 */
- /***********************************************************/
- #include <stdio.h>
- void main()
- {
- int max(int, int); /* 函数声明 */
- int min(int, int); /* 函数声明 */
- int add(int, int); /* 函数声明 */
-
- void process( int, int, int(*fun)() ); /* 函数声明 */
-
- int a, b;
- printf("Endter a and b: ");
- scanf("%d %d", &a, &b);
-
- printf("max = ");
- process(a, b, max);
- printf("min = ");
- process(a, b, min);
- printf("sum = ");
- process(a, b, add);
- }
- int max(int x, int y) /* 函数定义 */
- {
- int z;
-
- if( x > y )
- {
- z = x;
- }
- else
- {
- z = y;
- }
- return z;
- }
- int min(int x, int y) /* 函数定义 */
- {
- int z;
- if( x < y )
- {
- z = x;
- }
- else
- {
- z = y;
- }
- return z;
- }
- int add(int x, int y)
- {
- int z;
-
- z = x + y;
- return z;
- }
- void process( int x, int y, int(*fun)() ) /* 函数定义 */
- {
- int result;
- result = (*fun)(x, y);
- printf("%d\n", result);
- }
复制代码 |
|