·变量定义:用于为变量分配存储空间,还可为变量指定初始值。程序中,变量有且仅有一个定义。

·变量声明:用于向程序表明变量的类型和名字。

·定义也是声明:当定义变量时我们声明了它的类型和名字。

·extern关键字:通过使用extern关键字声明变量名而不定义它。

1.定义也是声明,extern声明不是定义,即不分配存储空间。extern告诉编译器变量在其他地方定义了。

 extern int i; //声明,不是定义
int i; //声明,也是定义

2.如果声明有初始化式,就被当作定义,即使前面加了extern。只有当extern声明位于函数外部时,才可以被初始化。

 extern double pi=3.1416;  //定义

3.函数的声明和定义区别比较简单,带有{ }的就是定义,否则就是声明

 extern double max(double d1,double d2);  //声明,此时extern可去掉

程序设计风格:

1. 不要把变量定义放入.h文件,这样容易导致重复定义错误。

2. 尽量使用static关键字把变量定义限制于该源文件作用域,除非变量被设计成全局的。

3. 可以在头文件中声明一个变量,在用的时候包含这个头文件就声明了这个变量。

总结:

1.变量在使用前就要被定义或者声明。

2.在一个程序中,变量只能定义一次,却可以声明多次。

3.定义分配存储空间,而声明不会。

注:有三个例外,以下三种实体的定义也可放到头文件中。

1.值在编译时就已知的const 变量的定义可以放到头文件中

 const int num = ;

2.类的定义可以放到头文件中

3.inline 函数

这三个实体可以定义在多个源文件中,只要在每个源文件中的定义相同。

最新文章

  1. [LeetCode] Validate Binary Search Tree 验证二叉搜索树
  2. 设置DIV可编辑
  3. hdu2082 找单词 (母函数)
  4. Pyqt 获取打包二进制文件中的资源
  5. phpcmsv9自定义sql语句查询模型实现
  6. Subversion详解
  7. MySQL(七) —— MySQL存储过程 & 存储引擎
  8. Qt之操作Excel
  9. AngularJS学习资源
  10. 豹哥嵌入式讲堂:ARM知识概要杂辑(2)- 第一款Cortex-M处理器
  11. MySQL——索引优化实战
  12. IAR EWAR 内联汇编 Error[Og010], Error [Og005], Error [Og006]
  13. 【转】Mysql行转换为列
  14. 【cocos2d-x 手游研发----地图活起来了】
  15. SpringBoot配置文件注入值数据校验
  16. 51NOD 1709:复杂度分析——题解
  17. 【并行计算】基于OpenMP的并行编程
  18. msvcp71.dll 怎么丢失的?如何修复
  19. JDBC编程错误:Exception in thread "main" java.sql.SQLException: Access denied for user ''@'localhost' (using password: YES)
  20. MVC学习十:MVC 特性作用和MVC 验证

热门文章

  1. POJ2823 滑动窗口
  2. sublime text 3 配置terminal 启动npm
  3. 重新格式化hadoop的namenode导致datanode无法启动的最简单解决办法
  4. 汉化manjaro下的火狐浏览器
  5. PHP实现SMTP邮件的发送实例
  6. js onsubmit和return false的关系
  7. python2.7入门---正则表达式
  8. Plsql developer 怎么在打开时登陆配置oracel client?
  9. APIO2018 游记
  10. restAssured + TestNG测试接口,以下是一个get 请求。