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

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

一般常用的写法:

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

运行结果:

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

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

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

 

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

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

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

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

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

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

 

 

posted @ 2014-04-27 09:38  技术宅星云  阅读(770)  评论(0编辑  收藏  举报