声明与定义区别:
(1)是否需要分配存储空间
(2)在一个作用域中可以重复声明,但不能重复定义。这是由(1)决定的,可以重复几次告诉编译器某个变量、函数已经在别处定义了,但不能重复多次地让编译器为同一个变量、函数分配不同的存储空间。
1.变量
(1)声明:一种是需要建立存储空间的。例如:int a /int a = 0;。在声明的时候就已经建立了存储空间。这种声明是"定义性声明(defining declaration)",即我们平时所说的“定义”。
(2)定义:另一种是不需要建立存储空间的,只是告诉编译器某变量已经在别处定义过了。例如:extern int a。其中,变量a是在别处定义的。这种声明是"引用性声明(referncing declaration)",即我们平时所说的“声明”。
2.函数
通常我们把函数声明叫做函数原型,而把函数定义叫做函数实现。
(1)声明:
void add(int a, int b);
(2)定义:
void add(int a , int b )
{
…
}
函数在被调用之前必须声明,且必须保证函数类型、函数名、参数个数、参数类型和参数顺序相同。