C/C++中函数声明

必须先声明再使用

这样是合法的:

void f(){
        //程序
        }
        
int main(){

    f();
}
void f();

int main(){

    f();
}

void f(){

        }

这样就是非法的

int main(){

    f();
}
void f(){

       }

"函数定义"是指对函数功能的确立,包括指定函数名,函数值类型、形参类型、函数体等,它是一个完整的、独立的函数单位。而"函数声明"的作用则是把函数的名字、函数类型以及形参类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致)。

在书写形式上,函数声明可以把函数头部复制过来,在后面加一个分号;而且在参数表中可以只写各个参数的类型名,而不必写参数名。

【返回类型】 函数名(参数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; }

就像变量可以在头文件中声明,而在源文件中定义一样,函数也可以在头文件中声明,在源文件中定义。

把函数声明直接放在每个使用该函数的源文件中是大多数新手习惯并喜爱的方式,这是合法的。但是这种方式古板且易出错。解决方法就是把函数的声明放在头文件中,这样可以确保对于指定函数其所有声明保持一致。如果函数接口发生变化,则只需修改其唯一声明即可。

将提供函数声明的头文件包含在定义该函数的源文件中,可使编译器能检查该函数的定义和声明是否一致。特别地,如果函数定义和函数声明的形参列表一致,但返回类型不一致,编译器会发出警告或出错信息来指出差异。

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

函数的定义

函数的定义是一个完整的函数单元:

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

函数的声明

函数声明只是对编译系统的一个说明:

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

发布了172 篇原创文章 · 获赞 49 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/qq_38769551/article/details/105451730
今日推荐