定义函数声明误区和函数相互调用导致的问题
我们编写程序时一般有个习惯,写函数都爱把函数写到主函数的前面,
一般常用的写法:
#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,会导致无穷循环。
这个也要注意编写程序中尽量避免函数的相互调用出现混乱。
*********************
交流即分享,分享才能进步!
不对之处,还请各位前辈多多指教。
by 星云
********************