关于const 的问题
网上看的:
我们仍然可以绕过编译器的限制
去修改被定义为“常量”的内存区域。看下面的代码:
const int i = 10;
// 这里 i 已经被定义为常量,
但是我们仍然可以通过另外的方式去修
改它的值。
// 这说明把 i 定义为常量,
实际上是防止通过 i 去修改所代表的内存。
int *pi = (int*) &i;
但通过实验我发现:
#include <iostream>#include <string>using namespace std;void func(const int *pi){ int *pp = (int *)pi; *pp = 100;}int main(){ const int a = 5; const int *pa = &a; cout<<"address:"<<&a << " value:"<< a << " address: "<< pa << " value: "<<*pa<< endl; func(pa); cout<<"address:"<<&a << " value:"<< a << " address: "<< pa << " value: "<<*pa<< endl; const int *pt = &a; cout << "address: "<< pt << " value: "<< *pt<< " "<< a<<endl; return 0;}