const,static,volatile关键字的作用

tech2022-08-17  134

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

const关键字:static关键字:volatile关键字:


参考大佬文章: https://www.cnblogs.com/nanqiang/p/9897891.html

const关键字:

1.欲阻止一个变量被改变,可使用const,在定义该const变量时,需先初始化,以后就没有机会改变他了; 2.对指针而言,可以指定指针本身为const,也可以指定指针所指的数据为const,或二者同时指定为const; 3.在一个函数声明中,const可以修饰形参表明他是一个输入参数,在函数内部不可以改变其值; 4.对于类的成员函数,有时候必须指定其为const类型,表明其是一个常函数,不能修改类的成员变量; 5.对于类的成员函数,有时候必须指定其返回值为const类型,以使得其返回值不为“左值”

static关键字:

1.static局部变量在函数内定义,它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。再次调用该函数可以再次使用。 2.static修饰全局变量的时候,这个全局变量只能在本文件中访问,不能在其它文件中访问,即便是extern外部声明也不可以。 3.static修饰一个函数,则这个函数的只能在本文件中调用,不能被其他文件调用。Static修饰的局部变量存放在全局数据区的静态变量区。初始化的时候自动初始化为0;  (1)不想被释放的时候,可以使用static修饰。比如修饰函数中存放在栈空间的数组。如果不想让这个数组在函数调用结束释放可以使用static修饰  (2)考虑到数据安全性(当程想要使用全局变量的时候应该先考虑使用static)

在C++中static关键字除了具有C中的作用还有在类中的使用   在类中,static可以用来修饰静态数据成员和静态成员方法   静态数据成员   (1)静态数据成员可以实现多个对象之间的数据共享,它是类的所有对象的共享成员,它在内存中只占一份空间,如果改变它的值,则各对象中这个数据成员的值都被改变。   (2)静态数据成员是在程序开始运行时被分配空间,到程序结束之后才释放,只要类中指定了静态数据成员,即使不定义对象,也会为静态数据成员分配空间。   (3)静态数据成员可以被初始化,但是只能在类体外进行初始化,若为对静态数据成员赋初值,则编译器会自动为其初始化为0   (4)静态数据成员既可以通过对象名引用,也可以通过类名引用。

静态成员函数   (1)静态成员函数和静态数据成员一样,他们都属于类的静态成员,而不是对象成员。   (2)非静态成员函数有this指针,而静态成员函数没有this指针。   (3)静态成员函数主要用来方位静态数据成员而不能访问非静态成员。

volatile关键字:

一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了。精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存器里的备份。下面是volatile变量的几个例子: 1). 并行设备的硬件寄存器(如:状态寄存器) 2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables) 3). 多线程应用中被几个任务共享的变量

Volatile 关键字告诉编译器不要持有变量的临时性拷贝。一般用在多线程程序中,以避免在其中一个线程操作该变量时,将其拷贝入寄存器。

最新回复(0)