我是初学者,如果我违反任何规则,请道歉。这是我的问题。
我在 Codeblocks 上使用 GCC 编译器,我注意到一段特殊的代码片段有一些特殊之处。我希望有人可以对此有所了解。
int main()
{
Tree *t;
//some operations on the tree
traverse();// No parameter is passed here.
...
}
void traverse(Tree *t)
{
..
}
在以下代码中,函数 traverse() 正确执行。我的问题是为什么?我不确定这一点,但是如果未声明函数,则其默认类型将变为 int。现在,编译器不仅在编译时抑制了错误,而且还正确地为函数 traverse() 提供了参数“t”。
这是因为智能编译器设计吗?
所以总的来说:我的问题是 - 如果编译器遇到尚未声明的方法,它会默认采取什么行为?更重要的是,它如何“知道”我想传递哪个参数?
如你所知,我可以拥有三个“Tree *”实例:t1、t2 和 t3。那么编译器会通过哪一个呢?
我试着在谷歌上四处寻找,但还没有找到明确的来源。
感谢您的时间。:)