变量声明和定义的关系
C++语言支持分离式编译(separate compilation),为了支持分离式编译,C++语言将声明和定义区分开。
声明(declaration):
使得名字为程序所知,一个文件如果想使用别处定义的名字,就必须包含对那个名字的声明。
规定了变量的类型和名字
定义(definition):
负责创建和名字相关的实体
除了规定了变量的类型和名字外,还申请了储存空间,会给变量赋初始值
extern int i;//声明i而非定义i
int j;//声明并定义j
//包含显式初始化的声明就是定义
extern double pi = 3.14;//定义
PS:
1.一个变量可以被多次声明,但是只能被一次定义。
2.在多个文件中使用同一个变量,就必须将变量和定义分离。
关键概念:[静态类型]( https://zhuanlan.zhihu.com/p/109803872#:~:text=静态类型语言中,变量的类型必须先声明,即在创建的那一刻就已经确定好变量的类型,而后的使用中,你只能将这一指定类型的数据赋值给变量。 ,%E5%A6%82%E6%9E%9C%E5%BC%BA%E8%A1%8C%E5%B0%86%E5%85%B6%E4%BB%96%E4%B8%8D%E7%9B%B8%E5%B9%B2%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%95%B0%E6%8D%AE%E8%B5%8B%E5%80%BC%E7%BB%99%E5%AE%83%EF%BC%8C%E5%B0%B1%E4%BC%9A%E5%BC%95%E5%8F%91%E9%94%99%E8%AF%AF%E3%80%82%20%E5%9C%A8%E9%9D%99%E6%80%81%E8%AF%AD%E8%A8%80%E4%B8%AD%EF%BC%8C%E4%B8%80%E6%97%A6%E5%A3%B0%E6%98%8E%E4%B8%80%E4%B8%AA%E5%8F%98%E9%87%8F%E6%98%AFint%E7%B1%BB%E5%9E%8B%EF%BC%8C%E4%B9%8B%E5%90%8E%E5%B0%B1%E5%8F%AA%E8%83%BD%E5%B0%86int%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%95%B0%E6%8D%AE%E8%B5%8B%E5%80%BC%E7%BB%99%E5%AE%83%EF%BC%8C%E5%90%A6%E5%88%99%E5%B0%B1%E4%BC%9A%E5%BC%95%E5%8F%91%E9%94%99%E8%AF%AF%EF%BC%8C%E8%80%8C%E5%8A%A8%E6%80%81%E7%B1%BB%E5%9E%8B%E5%88%99%E6%B2%A1%E6%9C%89%E8%BF%99%E6%A0%B7%E7%9A%84%E9%99%90%E5%88%B6%EF%BC%8C%E4%BD%A0%E5%B0%86%E4%BB%80%E4%B9%88%E7%B1%BB%E5%9E%8B%E7%9A%84%E6%95%B0%E6%8D%AE%E8%B5%8B%E5%80%BC%E7%BB%99%E5%8F%98%E9%87%8F%EF%BC%8C%E8%BF%99%E4%B8%AA%E5%8F%98%E9%87%8F%E5%B0%B1%E6%98%AF%E4%BB%80%E4%B9%88%E7%B1%BB%E5%9E%8B)