C语言函数声明是要在主函数内部还是外部啊?

#include<stdio.h>
int main()
{
int process(int u,int t,int (*p)(int u,int t));
int a,b,c[3],i;
scanf("%d%d",&a,&b);
int max(int x,int y);
int min(int j,int k);
int sum(int q,int w);
c[0]=process(a,b,max);
c[1]=process(a,b,min);
c[2]=process(a,b,sum);
printf("the max is %d\nthe min is %d\nthe sum is %d\n",c[0],c[1],c[2]);
return 0;
}

int max(int x,int y)
{
if(y>x)x=y;
return x;
}

int min(int j,int k)
{
if(k<j)j=k;
return j;
}

int sum(int q,int w)
{
return q+w;
}

int process(int u,int t,int (*p)(int,int))
{
int f;
f=(*p)(u,t);
return f;
}

就这个程序而言,必须在外部声明才对吧?我试过这样不行,把声明拿出去就对了,但是看谭浩强的书,好像有很多在主函数内部声明的

函数声明定义 放在 主函数以外,与主函数地位 并列,不能放在主函数以内。

函数定义 放在 主函数 以后,那么在 主函数以前,或 在主函数声明部分(语句以前)要添加函数原型声明。

函数声明定义,若放在主函数以前, 主函数中 则 不需要 函数原型声明。

程序结构:
int main()
{
int process(int u,int t,int (*p)(int u,int t)); // 函数原型声明
int a,b,c[3],i;
int max(int x,int y); // 函数原型声明
int min(int j,int k); // 函数原型声明
int sum(int q,int w); // 函数原型声明
scanf("%d%d",&a,&b); // 这是语句,要放到声明以后,所以搬动到这里
。。。 // 其他语句
}

int max(int x,int y) // 函数声明定义,在主函数以后
{if(y>x)x=y;
return x;
}
。。。 // 其他 函数声明定义
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-11-04
可以再内部声明,要放在定义的变量之前,这样就行了
#include<stdio.h>

int main()
{
int max(int x,int y);
int min(int j,int k);
int sum(int q,int w);
int process(int u,int t,int (*p)(int u,int t));
int a,b,c[3],i;
scanf("%d%d",&a,&b);

c[0]=process(a,b,max);
c[1]=process(a,b,min);
c[2]=process(a,b,sum);
printf("the max is %d\nthe min is %d\nthe sum is %d\n",c[0],c[1],c[2]);
return 0;
}

int max(int x,int y)
{
if(y>x)x=y;
return x;
}

int min(int j,int k)
{
if(k<j)j=k;
return j;
}

int sum(int q,int w)
{
return q+w;
}

int process(int u,int t,int (*p)(int,int))
{
int f;
f=(*p)(u,t);
return f;
}
第2个回答  2012-11-04
C语言函数声明是在主函数内部。
第3个回答  2012-11-04
内部和外部都可以的哦~~~~~~ 你的程序在C99的C-FREE上没有问题。。。
可能你的C语言版本有问题的说,因为大部分人都用的是VC 6.0~~~~~~
第4个回答  2012-11-04
声明是函数体内部,在外部一般都是定义,只有用extern是表声明
相似回答