函数声明与函数定义的区别

作者&投稿:敞览 (若有异议请与网页底部的电邮联系)
C++中,函数的声明与函数的定义有什么区别?~

函数的声明与函数的定义的区别:
声明:一般在头文件里,对编译器说:这里我有一个函数叫function() 让编译器知道这个函数的存在。定义:一般在源文件里,具体就是函数的实现过程 写明函数体。
你还可以这样理解:
首先下图中的程序执行时,电脑是从上到下执行的。
也就是说假如没有函数的声明那一句,当函数执行到函数调用这一句时,电脑不知道fun是什么东西,他不知道在下面有这个函数的具体实现。
因此,需要声明下,告诉电脑,确实有这个东西存在,是函数,在下面有定义。

扩展资料:

集成开发环境(IDE)

Visual Studio (Visual C++)
C++ Builder
kDevelop
Anjuta
Code::Blocks:开放源码的全功能的跨平台C/C++集成开发环境 。
Visual Mingw
Ideone
Eclipse CDT
Compilr
Code Lite
Netbeans C++
集成开发环境(IDE),功能齐全,调试功能很强,程序编好后,可以立刻在环境中调试以获得初步测试结果,然后,可以方便地做成beta版形式,拿到实际环境中进一步测试,最后做成软件发行版。

编译器
Dev C++
Ultimate++
Digital Mars
C-Free
MinGW
Tiny C Compiler
参考资料:百度百科-C++

函数先声明才可以被调用,如同变量先声明后使用。函数的声明也可以和函数定义分开。一个函数只可以定义一次,但是可以声明多次。
函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。
函数原型即是上述所说的三个元素:函数返回类型、函数名和形参列表。
也就是说是通过函数原型进行函数声明的!

声明与定义的区别:

函数的声明与函数的定义形式上十分相似,但是二者有着本质上的不同。声明是不开辟内存的,仅仅告诉编译器,要声明的部分存在,要预留一点空间。定义则需要开辟内存。

函数的定义

函数的定义是一个完整的函数单元,包含函数类型、函数名、形参及形参类型、函数体等。在程序中,函数的定义只能有一次。函数首部与花括号间不加分号。

函数的声明

函数声明只是对编译系统的一个说明:函数声明是对定义的函数的返回值的类型说明,以通知系统在本函数中所调用的函数是什么类型。不包含函数体(或形参),调用几次该函数就应在各个主调函数中做相应声明。函数声明是一个说明语句,必须以分号结束。

拓展资料:

C语言编译系统是由上往下编译的.一般被调函数放在主调函数后面的话,前面就该有声明.不然C由上往下的编译系统将无法识别。正如变量必须先声明后使用一样,函数也必须在被调用之前先声明,否则无法调用!函数的声明可以与定义分离,要注意的是一个函数只能被定义一次,但可以声明多次。

函数声明由函数返回类型、函数名和形参列表组成。形参列表必须包括形参类型,但是不必对形参命名。这三个元素被称为函数原型,函数原型描述了函数的接口。定义函数的程序员提供函数原型,使用函数的程序员就只需要对函数原型编辑即可。



函数声明表示有这么个函数了,函数定义就是具体实现了。
举个例子:
函数声明:
int fun(int a, int b);

函数定义:
int fun(int a,int b)
{ int c;
c=a+b;
return c; }

函数声明就像是函数定义的头部,比较简略,函数是用来调用的,如果函数定义部写到调用的位置后面,执行到调用位置,后面根本没执行就找不到了,当然报错了,就要在前面加声明,表示有这个函数,反之先写函数体,后调用声明就用不了,不在同一源文件,道理也是如此。

对函数而言,函数的声明是函数的原型,函数的定义是对函数功能的定义。对被调函数的声明是在主调函数的声明部分中的,而函数的定义显然是不在声明部分的范围内的,它是个独立的模块。
  对变量而言,在声明部分出现的的变量的情况有两种:一种是需要建立存储空间的,(如"int a;"),另一种是不需要建立存储空间的(如“extern a;”).前者为定义性声明,或简称为定义;后者为引用性声明。广义滴说,声明包括定义,但并非所有的声明都是定义。对于“int a;”而言,它既是声明又是定义;而“extern a;”,它是声明而不是定义。
一般为了叙述方便,把建立存储空间的声明称定义,而把不需要建立存储空间的声明称为声明,
此处为狭义的声明,但好理解

函数声明:
返回类型 函数名(参数类型1 参数名1,·····,参数类型n 参数名n);
如:int fun(int a, int b);
void display();
float fn1(float x);

函数定义:
返回类型 函数名(参数类型1 参数名1,·····,参数类型n 参数名n)
{
函数体······
}
如:int fun(int a,int b)
{ int c;
c=a+b;
return c; }

在程序中,如果main()函数在前,必须在mian()中写函数声明;如果函数在main()前面,可以不在main()中写函数声明!

函数的声明是相当于定义了一个函数的名字,即在程序中该名字就代表了一种操作,但声明中并不会说明该函数是怎么产生作用的;而函数的定义就是具体说明了函数的具体作用,即实现过程。
例如 void output(int x);//是一个函数的声明,它一般位于主函数的前面;
void main()
{int x;
cin>>x;
output(x);//函数的调用
}
void output(int x){ cout<<x<<endl;}//函数的定义,即指定了函数的具体操作。

c语言中一个函数的声明和定义有区别吗
答:有区别的,函数声明以分号结尾,函数定义后跟函数体 具体形式上可以相同,但声明也可以用省略模式,比如:int f(int a,int b) { return a+b; } 其声明可以是:int f(int a,int b);也可以是:int f(int,int);

定义函数,调用函数,声明函数什么意思什么区别
答:声明add是函数,有2个整型参数,返回整型值 定义函数 int add(int a,int b ){ return a+b;} -- 定义形参a,b 返回 a+b 调用函数 z = add(x,y);// x,y 的值已知,用xy代替形参,调用add,返回整型值 并赋给 z。函数定义若在main()以前,可略去 函数声明。函数定义若在main()以后,...

函数声明和定义的区别是什么?
答:函数声明时只需写出形参类型。函数定义时必须写出形参类型和变量名。C语言中的标准函数printf便使用这种机制。在声明不确定形参的函数时,形参部分可以使用省略号“…”代替。“…”告诉编译器,在函数调用时不检查形参类型是否与实参类型相同,也不检查参数个数。

c++中定义和声明有什么区别?
答:但是,下面的声明,一定仅仅是声明:extern int a;这表时,有一个int变量a,它一定是在另外其他地方定义的,所以编译器此时一定不会做什么分配内存的事,因为它就是声明,仅仅表明下面的代码引用了一个符号,而这个符号是int类型的a而已。如果是指函数的声明和定义:声明:一般在头文件里,对编译器说...

定义函数,调用函数,声明函数什么意思什么区别
答:定义函数 int add(int a, int b ) { return a+b;} -- 定义形参a,b 返回 a+b 调用函数 z = add(x,y); // x,y 的值已知,用xy代替形参,调用add, 返回整型值 并赋给 z。函数定义若在main() 以前,可略去 函数声明。函数定义若在main() 以后,main()以前要有 函数声明...

函数的定义和声明不是一回事()
答:不是一回事声明只是声明函数返回值,参数类型,定义的话是函数具体实现的功能 比如 int test (char * a, int b);这个是声明 int test (char *a, int b){ printf(===%s==%d=,a,b);return 0;} 函数具体实现

C语言中函数定义和声明有什么区别
答:声明跟定义的最大区别就是声明后面有分号,而定义没有,再者就是声明函数中的形参可以只写类型,写参数名,但是定义一定要全写

在C语言中,什么是声明、定义、初始化?有什么区别
答:1.声明和定义是针对函数的概念:包含函数实现的叫做函数的定义,一般位于.c文件中,如:int func(int a){return a+1;} 不包含函数实现,只包含函数名的叫做函数的声明,一般位于.h文件中。如:int func(int a);2.定义和初始化是针对变量的概念:int a;就是变量的定义 a=0;就是变量的...

声明跟定义的本质区别是什么?
答:定义就不一样了,定义直接告诉你了所有的东西,这个变量是什么,这个函数是什么功能,这个类里面包含了什么东西。很具体的说明。当然一般对于变量来说,我们不怎么区分声明或者定义之类的,一般没有人去说我要声明一个变量,然后定义这个变量什么的。要说都是直接说定义变量。声明一般都是对函数或者类来说...

函数的定义、调用、声明有什么区别,详细点儿举个例子最好
答:想要使用它必须去定义它的方法体。对于面向对象的编程里一般这些都成为“方法(method)”,函数是老的说法,在C/C++中一般会说函数(Function),而声明见的比较多的也是C/C++,因为如果在一个函数定义或声明前调用它,编译器会找不到这个函数在哪儿,它是在函数被调用的地方之前找的 ...