const
const 意味着"只读",下 的声明都是 么意思
const int a;
int const a;
const int *a;
int * const a;
int const * a const;
- 前两个的作用是一样,a是个常整型数。
- 第三个意味着a是指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。
- 第四个意思a是指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。
- 最后 一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时常指针也是不可修改的)。
- 结论: 关键字const的作用是为给读你代码的 传达有用的信息,实际上,声明一个参数为常 是告诉用户这个参数的应用目的。 如果你曾花很多时间清理其它人留下的垃圾,你就会很快学会感谢这点多余的信息。(当然,懂得const的程序员很少会 下的垃圾让别 来清 的) 通过给优化 些附加的信息,使关键字 const也许能产 生紧凑的代码。适合地使用关键字const可以使编译器保护那些不希望被改变的参数,防止其被恶意的代码修改。简之,这样可以减少bug的出现。
1).欲阻止某个变量被改变,可以使 const 关键字。在定义该 const变量时,通常需要对它进行初 始化,因为以后就没有机会再去改变它 ;
2).对指针来说,可以指定指针本身为 const,也可以指定指针所指的数据为 const,或 者同时指定为 const;
3).在一个函数声明中,const 可以修饰形参,表明它是 个输入参数,在函数内部不能改变其值;
4).对于类的成员函数,若指定其为 const 类型,则表明其是 个常函数, 能修改类的成员变量;
5).对于类的成员函数,有时候必须指定其返回值为 const 类型,以使得其返回值不为“左值”。
volatile 。
答: 一个定义为 volatile的变量是说他可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值 。精确地说就是,优化q在用到这个变量时必须每次都重新地新读取这个变量的值, 而不是使用保存在寄存器的备份。
下面是volatile变量的几个例子 :
并发设备的硬件寄存器 (如:状态寄存器 )
一个中断服务子程序中会访问到的非自动动变量 (Non-automatic variables)
多线程应用中被多个任务共享的变量
static
1).函数体内 static 变量的作用范围为该函数体, 不同于 auto 变量 ,该变量的内存只被分配 一次, 因此其值在下次调用时仍维持上次的值;
2).在模块内的 static 全局变量可以被模块内所用函数访问,但不能被模块外其它函数访问; 3).在模块内的 static 函数只可被这一模块内的其它函数调用 ,这个函数的使用范围被限制在声明它的模块内;
4).在类中的 static 成员变量属于整个类所拥有,对类的所有对象只有一份拷贝 ;
5).在类中的 static 成员函数属于整个类所拥有,这个函数不接收 this 指针,因此只能访问类的 static 成员变量 。
网友评论