static
修饰局部变量
一般情况下,局部变量存放于栈区,生命周期限于声明该变量的函数内部。但如果用static对局部变量进行修饰,则该变量存放在静态数据区,其生命周期一直持续到整个程序执行结束。
PS:
- 虽然static修饰的变量生命周期和存储空间发生了变化,但是作用域并没有改变,其仍然是一个局部变量,作用域仅限于该语句块。
- 在用static修饰局部变量后,该变量只在初次运行时进行初始化工作,且只进行一次。
修饰全局变量(函数)
- 修饰变量
表示该变量为类及其所有的对象所共有。 - 修饰函数
1.表示该函数属于一个类而不是属于此类的某个特定对象。
2.对于静态成员函数,只能访问静态成员函数和静态成员变量,不能访问非静态成员函数或者变量。
它们在存储空间中都只存在一个副本。可以通过类和对象去调用。
extern
- 在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。
- C++中多一个用途,用于指示C或者C++函数的调用规范。比如在C++中调用C库函数,就需要在C++程序中用extern "C"声明要引用的函数。这是给链接器用的,告诉链接器在链接的时候用C函数规范来链接。主要原因是C++和C程序编译完成后在目标代码中命名规则不同,用此来解决名字匹配的问题。
网友评论