前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深刻理解----修饰变量----关键字

深刻理解----修饰变量----关键字

作者头像
用户1941540
发布2018-05-11 12:03:41
7050
发布2018-05-11 12:03:41
举报
文章被收录于专栏:ShaoYL

1.extern关键字

  • 基本解释:引用一个全局的量,
    • extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。

使用介绍

①全局的变量
  • 在一个源文件里定义了一个变量,int i = 0;
  • 在另一个文件里用 extern int i;就可以访问同一个变量i;
②全局的常量
  • 在一个源文件里定义了一个常量,int const i = 0;
  • 在另一个文件里用 extern const int i;就可以访问同一个常量i;
③坑
  • 不能有重复定义的全局变量----不能在两个文件定义一样的变量
    • 即不能在两个文件中,int i = 0;或者int const i = 0;
  • 如果全局变量被修饰为全局常量,那么也应该应用全局常量---加const

2.宏定义 #define

  • 宏定义又称为宏代换、宏替换,简称“宏”。

说明:

代码语言:javascript
复制
- (1)宏名一般用大写
- (2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
- (3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
- (4)宏定义末尾不加分号;
- (5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
- (6)可以用#undef命令终止宏定义的作用域
- (7)宏定义可以嵌套
- (8)字符串" "中永远不包含宏
- (9)宏定义不分配内存,变量定义分配内存。
- (10)宏定义不存在类型问题,它的参数也是无类型的。

有参宏定义中#的用法

  • 加双引号
代码语言:javascript
复制
    #define STR(str) #str
    #用于把宏定义中的参数两端加上字符串的""
    比如,这里STR(myname)会被替换成"myname"

有参宏定义中##的用法

  • 拼接
代码语言:javascript
复制
  #define WIDE(str) L##str
  则会将形参str的前面加上L
  比如:WIDE("abc")就会被替换成L"abc"
  如果有#define FUN(a,b) vo##a##b()
  那么FUN(id ma,in)会被替换成void main()
宏定义的值,在程序中是不可改变的值,而且在引用的时候会分配临时内存空间

3.定义全局变量

  • 全局变量具有全局作用域。全局变量只需在一个源文件中定义,就可以作用于所有的源文件。
  • 当然,其他不包含全局变量定义的源文件需要用extern 关键字再次声明这个全局变量。
①全局变量当没有其他关键字修饰时。他定义的值可以在其他地方更改,但是好处是只分配一份内存空间。
②当全局变量被const关键字修饰时。他定义的是常量,他的值不能在其他地方更改,而且在内存中也只占用一份内存空间。

4.const关键字

  • const用法主要是防止定义的对象再次被修改,定义对象变量时要初始化变量。节约内存空间,

5.static关键字

  • 首先static的最主要功能是隐藏,其次因为static变量存放在静态存储区,所以它具备持久性和默认值0.
①.修饰局部变量
  • 不改变局部变量作用域
  • 延长了局部变量的寿命,可以让局部变量在整个程序运行过程中只有一份内存,且只会初始化一次
②.修饰全局变量
  • 让这个全局变量仅限于当前文件能访问(哪个文件:定义这个全局变量的文件)

6.static 关键字 搭配 const 关键字

  • 不能被外界引用,而且是常量
  • 防止重复定义
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-08-19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.extern关键字
    • 使用介绍
      • ①全局的变量
      • ②全局的常量
      • ③坑
  • 2.宏定义 #define
    • 说明:
      • 有参宏定义中#的用法
        • 有参宏定义中##的用法
          • ②当全局变量被const关键字修饰时。他定义的是常量,他的值不能在其他地方更改,而且在内存中也只占用一份内存空间。
          • ①.修饰局部变量
          • ②.修饰全局变量
      • 3.定义全局变量
      • 4.const关键字
      • 5.static关键字
      • 6.static 关键字 搭配 const 关键字
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档