首页 > 代码库 > 关于函数声明的小知识点

关于函数声明的小知识点

C语言编译系统是由上往下编译的.一般被调函数放在主调函数后面的话,前面就该有声明.不然C由上往下的编译系统将无法识别。正如变量必须先声明后使用一样,函数也必须在被调用之前先声明,否则无法调用!函数的声明可以与定义分离,要注意的是一个函数只能被定义一次,但可以声明多次。
【返回类型】 函数名(参数1类型 参数1,参数2类型 参数2,……);
例子:
#include<stdio.h>
int add(int x,int y); //函数声明语句
main()
{
int a,b,c;
c=add(a,b);
printf("%d",c);
}
int add(int x,int y)//函数定义
{ int z; z=x+y; return z; }
 

文件中声明函数:

编辑
就像变量可以在头文件中声明,而在源文件中定义一样,函数也可以在头文件中声明,在源文件中定义。
把函数声明直接放在每个使用该函数的源文件中是大多数新手习惯并喜爱的方式,这是合法的。但是这种方式古板且易出错。解决方法就是把函数的声明放在头文件中,这样可以确保对于指定函数其所有声明保持一致。如果函数接口发生变化,则只需修改其唯一的声明即可。
将提供函数声明的头文件包含在定义该函数的源文件中,可使编译器能检查该函数的定义和声明是否一致。特别地,如果函数定义和函数声明的形参列表一致,但返回类型不一致,编译器会发出警告或出错信息来指出差异。

声明与定义的区别:

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

函数的定义

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

函数的声明

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

注意事项:

编辑
  1. 函数声明可以省略形参名,但是函数定义的首部必须写出所有形参名并给出其对应的数据类型。
  2. 函数原型的主要目的为声明函数返回值类型以及函数的期望接受的参数的个数、参数类型和参数顺序
  3. 如果程序中没有某个函数的函数原型(没有说明),编译系统就会用第一次出现的这个函数(函数定义或函数调用)构造函数原型
    1. 在缺省下编译系统默认函数返回值为int
    2. 而对函数参数类型不做任何假设
  4. 常见错误
    1. 和函数原型不匹配的函数调用会导致语法错误
    2. 函数原型和函数定义不一致,也会产生错误
    3. C语言环境下,如果函数不进行声明就使用,可能会发生错误,因为默认将返回值做为int类型来处理,所以,最好是在使用之前对函数进行声明。

关于函数声明的小知识点