在c中可以嵌套调用函数,但不可以嵌套定义函数。
创新互联建站是一家从事企业网站建设、网站建设、做网站、行业门户网站建设、网页设计制作的专业网站设计公司,拥有经验丰富的网站建设工程师和网页设计人员,具备各种规模与类型网站建设的实力,在网站建设领域树立了自己独特的设计风格。自公司成立以来曾独立设计制作的站点1000多家。
函数嵌套调用是允许的。
int a()
{
b();//调用函数b
}
函数嵌套定义是错误的。
int a()
{
int b() //在函数a中定义函数b
{
……
……
}
函数嵌套
就是函数里面调用另外一个函数
或者函数自身。
对于自身的嵌套
称为递归
实现的话
直接定义调用就可以了。
函数嵌套是语言特性,递归调用是逻辑思想。
1
函数嵌套
函数嵌套允许在一个函数中调用另外一个函数,比如有三个函数
例:
funca()
{
funcb();
}
funcb()
{
funcc();
}
funcc()
{
cout
"hello"
评论
加载更多
#include stdio.h
void b()
{
printf("Hello World!\n");
}
void a()
{
b();
}
void main ()
{
a();
}
这样就OK了,只要遵循一个原则,函数在被调用前必须是已经声明过的。因为编译器是要先知道有这个东西存在(已经被定义或声明过),才能通过编译。
如果函数b在函数a之前定义(如上),则不需要在函数a里定义,直接调用即可;
如果函数b在函数a之后定义(如下),则应在在a中声明函数b之后才能调用。
void a()
{
void b();
b();
}
void b()
{
printf("Hello World!\n");
}
#include
int
func(int
i);
//函数的原型定义
int
main(void)
{
int
n;
float
y;
scanf_s("%d",n);
//n没有被初始化,为任意值,此时是读取一个值给n,删去,直接给n初始化为5也可以
scanf_s是vs2013编译器专用的,请自行改成scanf
y
=
func(n);
/*函数的调用*/
printf("%d!=%f",
n,
y);
/*for语句多余*/
return
0;
}
int
func(int
i)
{
int
sum=0;
if
((i
==
0)
||
(i
==
1))
sum
=
1;
else
sum
=
func(i-1)
*
i;
//
i的值没有变化,一直都是读入的值,不会终止递归。
return
sum;
}