一个C语言变量可以同时被说明为const和volatile吗
可以。const修饰符的含义是变量的值不能被使用了const修饰符的那段代码修改,但这并不意味着它不能被这段代码以外的其它手段修改。
例如,在2.6的例子中,通过一个volatile const指针t来存取timer结构。函数time_addition()本身并不修改t->value的值,因此t->value被说明为const。不过,计算机的硬件会修改这个值,因此t->value又被说明为volatile。如果同时用const和volatile来说明一个变量,那么这两个修饰符随便哪个在先都行。
请参见:
1、什么时候应该使用volatile修饰符?
2、什么时候应该使用const修饰符?
3、什么时候不应该使用类型强制转换(typecast)?
例如,在2.6的例子中,通过一个volatile const指针t来存取timer结构。函数time_addition()本身并不修改t->value的值,因此t->value被说明为const。不过,计算机的硬件会修改这个值,因此t->value又被说明为volatile。如果同时用const和volatile来说明一个变量,那么这两个修饰符随便哪个在先都行。
请参见:
1、什么时候应该使用volatile修饰符?
2、什么时候应该使用const修饰符?
3、什么时候不应该使用类型强制转换(typecast)?