问个函数原型的问题?
如果在主函数main下面还有个函数,就必须在编译开头声明函数原型,这是什么原因?还想问下什么情况不需要声明函数原型...
如果在主函数main下面还有个函数,就必须在编译开头声明函数原型,这是什么原因?还想问下什么情况不需要声明函数原型
展开
3个回答
展开全部
因为编译器编译你的程序的时候是从上往下读的。他需要你对所有非系统保留的字进行解释。也就是说,如果你先使用函数,再定义函数,编译器会先读到你使用该函数的语句,然后再读到你定义函数的语句,从而发现无法识别该函数。
声明函数的原型主要取决于编程人员的编程风格。有些人喜欢把所有自定义函数写在main函数之后,所以开头就必须定义函数原型。如果你把main函数放在整个程序的最后,所有的函数原型都不需要声明。但是有一个特例,就是函数的递归调用。比如函数A(int b)是一个递归函数,也就是说,A还会调用A,那么必须在开头声明这个函数,因为当编译器读到A这个函数的时候,函数还没有定义完,就遇到了调用这个函数。
声明函数的原型主要取决于编程人员的编程风格。有些人喜欢把所有自定义函数写在main函数之后,所以开头就必须定义函数原型。如果你把main函数放在整个程序的最后,所有的函数原型都不需要声明。但是有一个特例,就是函数的递归调用。比如函数A(int b)是一个递归函数,也就是说,A还会调用A,那么必须在开头声明这个函数,因为当编译器读到A这个函数的时候,函数还没有定义完,就遇到了调用这个函数。
展开全部
编译器在变异过程中遇到的标识符都必须是预先有明确定义的。
所以当函数定义在main后定义,而在main里边就有使用时,编译器遇到main内的函数调用就不知道具体定义是什么,所以需要在main函数前有声明,告诉编译器在别的地方有详细定义,然后编译器就会自己去搜索定义。
main前的函数声明就是这个作用。
也因此当函数是在main前定义的时,就不需要特别声明,他的声明和定义是同时完成的。
所以当函数定义在main后定义,而在main里边就有使用时,编译器遇到main内的函数调用就不知道具体定义是什么,所以需要在main函数前有声明,告诉编译器在别的地方有详细定义,然后编译器就会自己去搜索定义。
main前的函数声明就是这个作用。
也因此当函数是在main前定义的时,就不需要特别声明,他的声明和定义是同时完成的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼上说的都很对,其实这只是C的情况,JAVA里只要你写了,无须声明的!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询