c语言调用与嵌套
‘壹’ 为什么“c语言既可以嵌套定义又可以递归调用”是错的
C语言可以递归调用,但是(函数)不能嵌套定义。
例如:
intfact(intn)
{
if(n==0)
return0;
else
returnn*fact(n-1);
}
图中的递归调用是允许的。
而:
voidfoo()
{
voidbar()
{
//Somecode
}
}
这样在函数内定义函数是不允许的。
不过结构体是可以嵌套定义的,例如:
structtest{
inta;
structdemo{
charb;
};
};
这样在结构体内定义结构体,是可以的。
‘贰’ C语言函数的定义和函数的调用哪个可以嵌套
1、C语言函数的定义不能嵌套,函数的调用可以嵌套。
2、C语言中函数的定义都是相互平行、相互独立的,也就是说在函数定义时,函数体内不能包含另一个函数的定义,即函数不能嵌套定义,但可以 嵌套调用。嵌套函数,就是指在某些情况下,您可能需要将某函数作为另一函数的参数使用,这一函数就是嵌套函数。一个为大家所熟知的例子就是 qsort函数会将一个比较器cmp作为参数.在一个程序中, 主函数调用了sum函数,而在sum函数中又调用了mul函数。在一个函数被调用的过程中又调用另一个函数,这就是函数的 嵌套调用。如果是函数本身嵌套调用函数本身,那就是函数递归调用了。
‘叁’ c语言中“函数的定义不可以嵌套,但函数的调用可以嵌套”是什么意思最好能举例子说明!谢谢
所谓的定义函数就是在一个函数外声明一个函数 可以是函数头 如int fun(int ,int )属于函数声明
函数体可以在后来再输入 但是一定要先声明再使用 所谓不能嵌套定义就是不能再一个函数体(任何一个函数)内部声明一个函数 比如在main函数内就不能有int fun(int ,int )定义 这样是错误的
一个程序是从main函数开始的 也是从main函数结束的 这样在main函数内调用其它函数就不矛盾了 如printf就是一个函数 被调用了 属于嵌套调用
嵌套调用可以举个n的阶乘的例子
int fun(int n)
{
if(n==0)
return 1;
else
return n*fun(n-1);
}
即为嵌套调用 这个函数自己调用自己
‘肆’ c语言中的函数可以嵌套调用也可以递归调用,这句话对吗
这句话是不对的。
嵌套是两种结构间的关系,而不是函数间的关系。递归是一个函数调用自身,可以看作是一个函数调用另一个函数中的较特别的例子。
函数嵌套与递归调用的区别函数嵌套是语言特性,递归调用是逻辑思想。
(4)c语言调用与嵌套扩展阅读:
函数嵌套函数嵌套允许在一个函数中调用另外一个函数。
递归调用而递归是一种解决方案,一种思想,将一个大工作分为逐渐减小的小工作。递归是一种思想,只不过在程序中,就是依靠函数嵌套这个特性来实现了。递归最明显的特点就是,自己调用自己。
函数嵌套就是函数调用函数,是普遍的,递归就是函数调用自身,使函数嵌套的一个特例。嵌套调用就是某个函数调用另外一个函数,递归调用是一个函数直接或间接的调用自己。