为什么“C语言既可以嵌套定义又可以递归调用”是错的?

发布网友 发布时间:2022-03-29 09:05

我来回答

5个回答

懂视网 时间:2022-03-29 13:26

c语言不能嵌套定义。

  

  C语言是目前世界上流行、使用最广泛的面向过程的高级程序设计语言。C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

  

  C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

热心网友 时间:2022-03-29 10:34

C语言可以递归调用,但是(函数)不能嵌套定义。

例如:

int fact(int n)
{
    if (n == 0)
        return 0;
    else
        return n * fact(n - 1);
}

图中的递归调用是允许的。

而:

void foo()
{
    void bar()
    {
        // Some code
    }
}

这样在函数内定义函数是不允许的。


不过结构体是可以嵌套定义的,例如:

struct test {
    int a;
    struct demo {
        char b;
    };
};

这样在结构体内定义结构体,是可以的。

热心网友 时间:2022-03-29 11:52

在c语言中可以进行递归调用和嵌套调用,不能进行嵌套定义。
递归调用:
void moon()
{
static int b=3;
printf("#");
if(b>0){
b--;
moon();
}
}这样就是运行了三次moon()函数,为递归调用。
嵌套调用:
void moon()
{
static int b=3;
printf("#");
if(b>0){
b--;
Max();
}
}
在一个函数中调用不同函数便为嵌套调用。
嵌套定义:
void moon()
{
static int b=3;
printf("#");
Max(){
printf("#");
}
}这种就是嵌套定义,在一个函数中定义不同函数,这种在c语言中并不允许。在一个函数中定义相同函数便为递归定义,照样是不正确的。

热心网友 时间:2022-03-29 13:27

因为中国那帮老头子迂腐!!

99年后的C语言就支持了,尽信书不如无书,用Dev C++或者Codeblocks测试一样就会发现,C语言完全支持函数嵌套定义,这是C99国际标准里的新规定,C99的一个新特性。实践是检验真理的唯一方法,既然写了代码,为什么不编译一下呢?或者在古老的VC6.0里编译不了,那,试试最新的VC呢?最新版的VC试一试?就是看不惯一些人人云亦云,把真理埋没了。

热心网友 时间:2022-03-29 15:18

不可以嵌套定义的,只能递归调用
声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。
E-MAIL:11247931@qq.com