c语言中函数定义和声明有什么区别

c语言中函数定义和声明有什么区别,第1张

从C语言编译器的角度来看,函数声明只是一种协议,它告诉了调用者在调用这个函数之前需要给他什么参数,一般参数是通过寄存器或者压栈的方式传给被调用函数的,具体这些参数如何使用以及返回什么值到相应的寄存器里返回给调用者则是定义所描述的。

函数定义就是规定函数的格式与功能。

函数声明就是在函数调用之前进行的一种说明。

下面举例说明两者的语法格式:

#include<stdioh>

int fun(int a, int b);  // 函数的声明

void main()

{

    int x=1, y=2;

    int c;

    c = fun(x+y);

}

// 下面的fun函数就是函数的定义

int fun(int a, int b)

{

    return a+b;

}

注:如果被调函数(上例中为fun函数)写在调用处之前,可以不声明(本例是现在调用处 (c = fun(x+y);)之后)。

int Search(char mg[],int n,char Str,int &first,int &end);

返回一个int,参数为:char mg[]:char类型的数组。int n:一个int类型。char Str:char类型的指针。int &first:int类型的引用。int &end:int类型的引用

bool PD(char Str,int i,int n,char st[]);

返回一个bool,参数为:char Str:char类型的指针。int i:int类型。int n:int类型。char st[]:char类型的数组

char Clean(char Str,int first,int end,char mg[],char Fh[],int x);

返回一个char类型的指针,参数为:char Str:char类型的指针。int first:int类型。int end:int类型。char mg[]:char类型的数组。char Fh[]:char类型的数组。int x:int类型。

char input(char mg1[],char mg2[],char mg3[],char Fh[],char bd[],int &N);

返回一个char类型的指针,参数为:char mg1[]:char类型的数组。char mg2[]:char类型的数组。char mg3[]:char类型的数组。char Fh[]:char类型的数组。char bd[]:char类型的数组。int &N:int类型的引用

char TH(char mg1[],char mg2[],char mg3[],char Str,char Fh[],int m,int n);

返回一个char类型的指针,参数为:char mg1[]:char类型的数组。char mg2[]:char类型的数组。char mg3[]:char类型的数组。char Str:char类型的指针。char Fh[]:char类型的数组。int m:int类型。int n:int类型。

上面的都是函数声明,想要调用还要函数定义

char TH(char mg1[],char mg2[],char mg3[],char Str,char Fh[],int n,int x){

int first=0,end=0;

}

是一个函数定义,函数体内定义2个int类型的变量:first ,end并赋值为0函数的参数跟上面那个一样。

希望对你有帮助

声明是将一个名称引入程序。定义提供了一个实体在程序中的唯一描述。声明和定义有时是同时存在的。

  如int a;

  extern int b=1;

  只有当extern中不存在初始化式是才是声明。其他情况既是定义也是声明。

 定义提供了一个实体在程序中的唯一描述。在一个给定的定义域中重复声明一个符号是可以的,但是却不能重复定义,否则将会引起编译错误。但是在类中的成员函数和静态数据成员却是例外,虽然在类内它们都是声明,但是也不能有多个。

定义是说明函数的返回值、名字、参数个数、参数类型等数据;而实现是实现函数。

  C++是在C语言的基础上开发的一种通用编程语言,应用广泛。C++支持多种编程范式 --面向对象编程、泛型编程和过程化编程。最新正式标准C++14于2014年8月18日公布。其编程领域众广,常用于系统开发,引擎开发等应用领域,是至今为止最受广大程序员受用的最强大编程语言之一,支持类:类、封装、重载等特性!

函数声明语句就是是函数原型写出来。

作用就是告诉编译器有关函数的信息,函数的返回值的类型,函数的名字,函数的参数的个数和类型。其与函数的定义的区别是。声明是不开辟内存的,仅仅告诉编译器,要声明的部分存在,要预留一点空间。函数的定义则需要开辟内存。

形式参数是函数定义中的,系统没有为其分配内存空间,但是在定义里面可以使用的参数。例如:fun(int a)。这里a就是形式参数。

实际参数是函数调用的时候传给函数的变量。这个是系统实实在在分配了内存空间的变量。

简单点说,就是形式参数给个形式,实际参数放进去用。例如:fun(a);

函数声明的用处是告诉编译器声明的函数在后面有定义。如果你将函数定义放在调用的前面,就不需要声明。另外声明就是函数定义后面加上分号的形式。

例如:定义是fun(int a)。声明就是fun(int a);。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/11669087.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存