函数定义可以写到其它(任意)函数的前或后。
创新互联是一家专业提供海珠企业网站建设,专注与网站设计、成都网站设计、H5场景定制、小程序制作等业务。10年已为海珠众多企业、政府机构等服务。创新互联专业网站建设公司优惠进行中。
只是,在使用函数前,如果当前位置处于函数定义之后,则不需要声明函数,可以直接使用。如果当前位置处于函数未定义阶段(函数定义在其后面),则要先进行函数声明,才可以使用函数。
声明可以写在函数体内,也可以在函数体外进行声明!
C语言规定,返回值是int型的可以省略int关键字。如果子函数定义在调用函数后面,则在调用函数内部或其前面应对被调用函数加以声明,但int类型的函数可以例外。函数声明时不需要给出变量名,只要给出其类型就可以了(所以括号里的 int 和 int k 是一样的)。其实8.15有错误,int add(void)后面少了分号,你照样写当然也错了,要加分号的。
在C语言中,编译一个C语言源文件是从第一行开始扫描到最后的,你调用一个函数,之前必须定义或申明过这个函数。
这样是合法的:
void f(){
}
int main(){
f();
}
这样也是合法的
void f();
int main(){
f();
}
void f(){
}
这样就是非法的
int main(){
f();
}
void f(){
}
所以函数调用不一定需要先声明,当函数定义调用函数之后需才要先申明。
如果函数定义在要调用该函数的函数的前面,就可以不用声明了,比如定义在main()前面的函数,在main()函数里面就可以不用声明,直接调用就可以,但是如果在后面的话,就要声明了
先回答下第一个问题,子函数的实现方法可以放在使用它的主函数或者其它子函数后面,但是你的定义一定要在使用它之前;不然编译器怎么知道你用的函数square是什么,这就是我们经常包含头文件的一个目的,头文件是一些函数定义或者预编译命令。
修改是在#includestdio.h后面加
int square(int num);
第二个问题:num是在main定义是可以在main作用域内直接使用,或者当做参数传递给子函数,你的问题num为什么可以在子函数中用,首先你子函数的num并非main里的num只是你把他们名字写成一样了;main里num是通过值传递给子函数的num,实际他们两个num的内存地址是不一样的,你子函数换个名字去理解一下。
函数定义可以在调用之后,但是在调用前要加函数声明
#include iostream
using namespace std;
int main()
{
int b=2;
int test(int a); //函数声明(如果函数定义在调用后且没有声明,程序编译不了)
couttest(b); //函数调用
}
int test(int a) //函数定义
{
return a+2;
}
函数要先声明后才能调用,声明分为两种如下:
先声明后定义:
void b();
void a()
{
b();
}
void b()
{
}
声明和定义在一个地方:
void b()
{
}
void a()
{
b(); //这样才能满足先声明后调用
}
你编译错误的原因应该是这样:
void a()
{
b(); //此时b还没有声明
}
void b()
{
};