容易混淆的基本概念 成员变量 局部变量 全局变量
成员变量
写在类声明的大括号中的变量,我们称之为成员变量(属性、实例变量)
成员变量只能通过对象访问
成员变量不能离开类,离开类之后就不是成员变量
成员变量不能在定义的同时进行初始化
存储:堆(当前对象对应的堆的存储空间中)。存储在堆中的数据,不会被系统释放,只能程序员自己释放
局部变量
写在函数或者代码块中的变量,我们称之为局部变量
作用域:从定义的那一行开始,一直到大括号或者
return
局部变量可以先定义再初始化,也可以定义的同时初始化
存储:栈。存储在栈中的数据,系统给会自动释放
全局变量
写在函数和大括号外部的变量,称为全部变量
作用域:从定义的那一行开始,一直到文件末尾
全局变量可以先定义再初始化,也可以定义的同时初始化
存储:静态区,程序一启动就会分配存储空间,直到程序结束才会释放
全局变量分为两种:
static
修饰全局变量,只在该源文件中可用
extern
修饰全局变量,可以被其他类引用.h 头文件中声明
extern
可置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量或者函数时时,在其他模块中寻找其定义。另外,extern
也可用来进行链接指定注意:命名一定要很独特,才能区分与其他源文件中的全局变量,如果出现跟其他源文件同名的全局变量,则会报错误
区别:
extern
修饰的全局变量默认是有外部链接的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过 external 全局变量的声明,就可以使用全局变量。static
修饰的全局静态变量,作用域是声明此变量所在的文件。
版权声明: 本文为 InfoQ 作者【NewBoy】的原创文章。
原文链接:【http://xie.infoq.cn/article/9441bfbe770e75b87fee19f2a】。文章转载请联系作者。
评论