定义函数声明误区和函数相互调用导致的问题

我们编写程序时一般有个习惯,写函数都爱把函数写到主函数的前面,

一般常用的写法:

#include<iostream>
using namespace std;
void A()
{
    cout<<"函数A
";
}
void B()
{
    cout<<"函数B
";
}
int main()
{
    A();
    B();
    return 0;
}

运行结果:

现在看着很正常是吧?运行结果也对,我们一般定义函数都习惯这样写,以为这样就不用声明函数啦。

那么现在我们看下这个程序修改后这个源码是不是还可以这样?而不用声明呢?

#include<iostream>
using namespace std;
void A()
{
    cout<<"函数A
";
    B();
}
void B()
{
    cout<<"函数B
";
    A();
}
int main()
{
    A();
    B();
    return 0;
}

此程序未声明前会报错,原因没有声明。

看到上面没?出现了报错,这时候就必须要对函数进行声明了。

声明修改后正确的源码为:

#include<iostream>
using namespace std;
void A();
void B();
void A()
{
    cout<<"函数A
";
    B();
}
void B()
{
    cout<<"函数B
";
    A();
}
int main()
{
    A();
    B();
    return 0;
}

注意,此程序虽然修改后能正确运行但是由于在函数A中调用函数B,函数B中调用函数A,会导致无穷循环。

这个也要注意编写程序中尽量避免函数的相互调用出现混乱。

原文地址:https://www.cnblogs.com/xingyunblog/p/3693311.html