1. 定义和声明的区别(变量,在被使用前必须被定义或声明)?
- 声明用于向程序表明变量的类型和名字;
- 定义本身也是声明,当定义变量时声明了它的类型和名字;
- 变量必须且只能被定义一次,但是可以被声明多次;
- 若想只声明变量而不定义它,就必须在变量类型前加extern关键字,并且不可以使用初始化式(即赋值表达式)。仅仅是声明而不定义变量时,系统不会分配存储空间。
- 只有当extern声明位于函数外部(全局)时,才可以含有初始化式;
- 以下是几个例子:
extern int i; // 带有extern关键字,且没有初始化式,所以仅仅声明了变量i,并没有定义它
int i; // 不含extern,所以定义并声明了变量i
extern double pi = 3.14; // 虽然有extern,但是有了初始化式,所以是定义并声明了变量pi
2. 定义和声明,哪些应写在头文件中,哪些应写在源文件中?
- 大多数情况下,头文件用于声明而不是用于定义,同一个程序中有两个或以上文件含有同一个名称的全局变量的定义都会导致多重定义链接错误。因为头文件经常会包含在多个源文件中,因此不应该含有变量或函数的定义;<