C 函数声明的问题

来源:百度知道 编辑:UC知道 时间:2024/05/06 17:34:03
为什么当一个函数写在main函数的后边时,在main函数里对其调用之前要先声明;而当该函数在main函数的前边定义时,在main函数里对其调用的时候就不用声明了呢??

编译器在编译程序的时候,首先进行一遍一遍的扫描
然后,进行一遍一遍的翻译,通常都要好几遍的,这样才能编译成
目标程序

因此,他的扫描是按顺序扫描的,当你在使用该函数之前给出该函数的完整定义.那么当使用该函数时,编译器已经知道了这是个函数,而且知道了该函数的返回类型,以及标志符名称,和形参列表等信息,这时编译器就能正确的处理了
而如果你的函数使用在前,定义在后,那就会出现未定义的情况,因为编译器按顺序扫描源程序文件,并没有扫描到该函数的任何信息,然后你就使用了一个函数,但编译器并不认识他,因此,你要在之前给出函数的声明来解决这种问题,你给出函数的声明,实际上是告诉编译器,这是个函数,以及该函数的返回类型,函数名称,以及形参列表信息,这样,编译器就知道了它是个函数,就可以正确的处理了

声明的作用就是告诉编译器这个函数的存在。
当函数定义在调用处之前(你是在main()里面调用的)时,编译器已经知道函数的存在了因此就可以直接使用。
当函数定义在调用处之后(也就是你说的main()之后)时,如果不作函数声明,编译器就不知道有这个函数,就会报错。所以必须在调用处之前先作一个声明,告诉编译器这个函数的存在。

这个是语法格式的问题。。。

之前IDE知道有这函数,之后不知道,所以要声明