C/C++中的声明与定义

来源:互联网 发布:设计网络营销策划方案 编辑:程序博客网 时间:2024/06/05 15:00

含义

声明(Declaration), 用于告诉编译器被声明的函数/变量的存在, 及它们的类型/调用格式信息, 以检查是否被正确调用. 声明不分配内存空间.
定义(Definition), 用于告诉编译器被声明的函数/变量的存在位置, 会分配内存空间.
变量/函数在被使用之前一定要被声明. 声明和定义可以同时进行.
可以有多个声明, 但只能有一个定义.

函数的声明与定义

函数的Declaration由函数的签名(函数名+参数列表)与return类型, 外加一个分号组成. 如:

void fn(int a); 

定义则有函数实体:

void fn(int a){    printf("%d\n", a);}

C与C++的声明有一个不同之处:

void fn();

不带参的声明在C里代表可以传入任何参数, 而在C++中则代表不传入任何参数.
例如下面这段代码:

#include <stdio.h>void fn();int main(){    printf("Hello World!\n");    fn(1);}void fn(int a){    printf("%d\n", a);}

在C语言中, 它可以通过编译并执行, 但在C++中则不行.

若函数第一次出现时就定义了函数体, 则代表声明与定义同时进行.

变量的声明与定义

大多同时进行. 也可以用关键字extern来告诉编译器, 这仅仅是个声明:

int a; //声明与定义同时进行extern int b; //只有声明, 定义不在此处. 

其它语言中的类似语法

  • Java中的abstract方法及interface, 很纯粹的declaration.
  • Python中的global关键字与extern作用类似.
    
0 0
原创粉丝点击