C语言函数嵌套问题

有这样一段定义:在C语言中,所有的函数定义,包括主函数main在内,都是平行的。也就是说,在一个函数的函数体内, 不能再定义另一个函数, 即不能嵌套定义。但是函数之间允许相互调用,也允许嵌套调用。又有这样一个例子:int max(int a,int b)
{
if(a>b)return a;
else return b;
}
void main()
{
int max(int a,int b);
int x,y,z;
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
z=max(x,y);
printf("maxmum=%d",z);
}
在void main()中套了一个max函数,与定义是否矛盾?谢谢高手指点!

在C语言中,所有的函数定义,包括主函数main在内,都是平行的。也就是说,在一个函数的函数体内, 不能再定义另一个函数, 即不能嵌套定义.
在例子中,没有嵌套定义的.
int max(int a,int b)
{
if(a>b)return a;
else return b;
}//这是在定义max
而main()函数中,
void main()
{
int max(int a,int b);//这是声明,被调用函数,定义在main函数前,可以省略.
int x,y,z;
printf("input two numbers:\n");
scanf("%d%d",&x,&y);
z=max(x,y);//这是调用.
printf("maxmum=%d",z);
}
所以不矛盾..
温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-01-13
在c中可以嵌套调用函数,但不可以嵌套定义函数。
函数嵌套调用是允许的。
int a()
{
b();//调用函数b

}

函数嵌套定义是错误的。
int a()
{
int b() //在函数a中定义函数b
{
……
……
}本回答被网友采纳
第2个回答  2010-09-03
亲爱的楼主你好
//int max(int a,int b); 这段代码是max这个函数的申明哦
你把这行去掉你的程序也可以正常运行的
如果你把main函数剪切到max函数的前面
那么就必须加这个函数申明哦
不然会报错
第3个回答  2010-09-06
main里面的是max函数是函数声明,不过只有函数定义在调用后面的才需要在声明,在这个函数中是不需要声明的。
第4个回答  2010-09-03
声明与定义不一样的
相似回答