今天在牛客网上刷题是刷到一个关于const的题目
const int i = 0;
int *j = (int *) &i;
*j = 1;
printf("%d,%d", i, *j)
在牛客网中给出的答案是:0,1
而在下面的解析给出了更精确的分析:
C语言中的const是运行时const,编译时只是定义,在运行才会初始化。C语言中const变量不能用于成为数组长度等作为编译时常量的情况,原因就在此。C语言const变量在运行时改变了是可以再次读出改变后的值的。所以C语言中输出为1,1.
C++中,const变量是编译时的常量,可以向#define定义的常量一样使用。故C++中const变量的值在编译时就已经确定了,直接对cosnt变量进行了值的替换,因此当const变量的值改变时,const的变量值是不会得到更新的。所以C++语言中输出为0,1.