今天我面临一次面试,其中有一个问题对我来说非常棘手。
面试官说“如何让常数能够改变它的值?”
我回答“使用指针”,并向他展示了一个例子:
int main( void )
{
const int a = 3;
int *ptr;
ptr = (int*)( &a );
printf( "A=%d\n", a );
*ptr = 5;
printf( "A=%d\n", a );
return 0;
}
但他说这很好。但请告诉我哪一个属性使常量不可改变?他还说,有一种属性我们可以改变,并使其不断变化。
有这样的房产吗?它是如何工作的?
如果他说这很好,那么他就错了:尝试修改常量对象会产生未定义的行为。实际上,可能会发生以下三种情况之一:
- 常量变量的行为就像普通对象一样,您会看到它的值发生变化;
- 它存储在不可写的内存中,程序因访问冲突而崩溃;
- 它的每次使用都会被一个硬编码值替换,并且您不会看到它发生变化。
该语言没有定义任何运行时属性const
物体;只是编译时检查您没有意外修改它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)