简述static和volatile关键字的含义和作用

如题所述

static和volatile关键字的含义和作用如下:

一、static关键字的作用

1、修饰局部变量

static修饰局部变量时,使得被修饰的变量成为静态变量,存储在静态区。存储在静态区的数据生命周期与程序相同,在main函数之前初始化,在程序退出时销毁。(无论是局部静态还是全局静态)

2、修饰全局变量

全局变量本来就存储在静态区,因此static并不能改变其存储位置。但是,static限制了其链接属性。被static修饰的全局变量只能被该包含该定义的文件访问(即改变了作用域)。

3、修饰函数

static修饰函数使得函数只能在包含该函数定义的文件中被调用。对于静态函数,声明和定义需要放在同一个文件夹中。

4、面向对象中修饰数据成员

被static修饰的数据成员实际上相当于类域中的全局变量。因此,对于类的每个对象来说,它是共有的。它在整个程序中只有一份拷贝,只在定义时分配一次内存,供该类所有的对象使用,其值可以通过每个对象来更新。

由于静态数据成员存储在全局数据区,因此,在定义时就要分配内存,这也就导致静态数据成员不能在类声明中定义。

5、面向对象中修饰成员函数

同静态数据成员一样,静态成员函数也是属于类,而不属于任何一个类的实体对象,因此,静态成员函数不含有this指针。同时,它也不能访问类中其它的非静态数据成员和函数。(非静态成员函数可以访问静态数据数据成员和静态成员函数)

静态成员函数的访问方式:既可以通过访问操作符(.)或者(->)来访问,也可以通过<类名><函数名>的方式访问。

二、define关键字

C语言中,可以用#define定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。

(扩展:预编译又叫预处理。预编译不是编译,而是编译前的处理,编译器正式开始编译程序之前,会执行一段预处理程序(又称预处理器)专门对程序执行预处理操作。

C语言程序从编写到运行要经过预处理、编译、汇编和链接这4个阶段,大家习惯将前3个阶段统称为编译阶段,所以才有了<程序要经过编译和链接后才能运行>)

三、关键字const用来定义只读变量

被const定义的变量它的值是不允许改变的,不能给它重新赋值.所以说它定义的是只读变量,这也就意味着必须在定义的时候就给它赋初值,可以保护被修饰的变量,防止意外修改.

1、常量指针是指针指向的内容是常量ntconst*p;

常量指针指向的值不能改变,常量指针可以指向其他的地址,或者还可以通过其他的引用来改变变量的值的。

2、指针常量是指针本身是个常量是指指针本身是个常量int*constp;

不能在指向其他的地址但是地址中保存的数值是可以改变的,可以通过其他指向改地址的指针来修改。

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网