20、static关键字:修饰局部变量、全局变量、类中成员变量、类中成员函数
时间: 2023-10-09 20:08:03 浏览: 170
1. 修饰局部变量:当一个局部变量被声明为静态时,它的生命周期会被延长到整个程序运行期间,直到程序结束才会被销毁。同时,静态局部变量的作用域仍然是在定义它的函数内部,但是在该函数被调用时,它的值不会被初始化,而是保留上一次调用时的值。
2. 修饰全局变量:当一个全局变量被声明为静态时,它的作用域仍然是整个程序,但是它的可见性被限制在定义它的文件内部,其他文件无法直接访问它。另外,静态全局变量的初始化只会在程序启动时执行一次。
3. 修饰类中成员变量:当一个类中的成员变量被声明为静态时,它的作用域仍然是整个类,但是它不再是每个对象的独立变量,而是所有对象共享的变量。因此,对于所有对象来说,静态成员变量的值都是相同的,而且它们的内存空间也只有一份。
4. 修饰类中成员函数:当一个类中的成员函数被声明为静态时,它不再是对象的成员函数,而是属于整个类的函数。因此,它不需要通过对象来调用,可以直接通过类名和作用域解析符号来调用。另外,静态成员函数只能访问静态成员变量和其他静态成员函数,不能访问非静态成员变量和非静态成员函数。
相关问题
C语言中static关键字修饰全局变量的作用是什么
在C语言中,static关键字修饰全局变量的作用是将变量的作用域限制在当前文件内,使得变量对其他文件不可见。这样可以避免不同文件中同名全局变量的冲突问题,同时也可以增强程序的安全性和可维护性。另外,static关键字还可以修饰局部变量,用于保持变量的持久性,即在函数执行完后变量的值仍然能够保持不变。
5、Static全局变量与普通全局变量的区别;Static局部变量与普通局部变量的区别;static函数与普通函数区别; C++ 类中static成员与非static成员变量区别。(10 分)
1. Static全局变量与普通全局变量的区别:
- 静态全局变量的作用域仅限于定义该变量的源文件内,也就是说,在同一源程序的其他源文件中不能使用它;
- 普通全局变量则可以被同一程序中的所有源文件共享。
2. Static局部变量与普通局部变量的区别:
- 静态局部变量在程序执行过程中只被创建一次,不会随着函数的退出而被销毁,仍然保存在内存中,下次调用函数时可以继续使用;
- 普通局部变量在每次函数调用时都会被重新创建,函数退出时会被销毁。
3. Static函数与普通函数区别:
- 静态函数只能在当前文件中使用,其他文件无法调用该函数;
- 普通函数可以被其他文件调用。
4. C++ 类中static成员与非static成员变量区别:
- 非static成员变量属于对象级别,每个类对象都有一份,不同对象的该变量值可以不同;
- static成员变量属于类级别,所有类对象共享一份,无论创建多少个类对象,该变量只有一份。而且,static成员变量必须在类外初始化,因为它不属于任何一个对象。
总的来说,static修饰的变量和函数都具有“静态”的特性,这种特性使得它们在内存中只有一份拷贝,可以被多次调用或共享使用。
阅读全文