64,637
社区成员
发帖
与我相关
我的任务
分享
#include<iostream>
using namespace std;
int main()
{
const double cd[5]={1,2,3,4,5};
volatile double vd[5]={1,2,3,4,5};
double* pc;
double* pv;
for(int i=0;i<5;i++)
{
pc=const_cast<double*>(cd+i);
pv=const_cast<double*>(vd+i);
*pc=10;
*pv=11;
}
for(int k=0;k<5;k++)
{
cout<<"cd["<<k<<"]:"<<cd[k]<<endl;
cout<<"vd["<<k<<"]:"<<vd[k]<<endl;
}
}
#include<iostream>
using namespace std;
int main()
{
const double cd[5]={1,2,3,4,5};
volatile double vd[5]={1,2,3,4,5};
double* pc;
double* pv;
for(int i=0;i<5;i++)
{
pc=const_cast<double*>(cd+i);
pv=const_cast<double*>(vd+i);
*pc=10;
*pv=11;
}
for(int k=0;k<5;k++)
{
cout<<"cd["<<k<<"]:"<<cd[k]<<endl;
cout<<"vd["<<k<<"]:"<<vd[k]<<endl;
}
}
#include <iostream>
using namespace std;
int main()
{
const int a=10;
const int* pc=&a;
int* p=const_cast <int*>(&a);
cout<<"befor: ";
cout <<"a: "<<a;
cout <<" *pc: "<<*pc<<endl;
(*p)=1;
cout<<"after: ";
cout <<"a: "<<a;
cout <<" *pc: "<<*pc<<endl;
return 0;
}
我的vc6.0
9: cout <<a;
0040155E push 0Ah
00401560 mov ecx,offset std::cout (0047ff88)
00401565 call @ILT+240(std::basic_ostream<char,std::char_traits<char> >::operator<<) (004010f5)
注意:
0040155E push 0Ah
我想是编译器做了优化,对于const类型的东西,编译的时候直接用其代表的常量值替换了!
#include<iostream>
using namespace std;
int main()
{
const double cd[5]={1,2,3,4,5};
volatile double vd[5]={1,2,3,4,5};
double* pc;
double* pv;
for(int i=0;i<5;i++)
{
pc=const_cast<double*>(cd+i);
pv=const_cast<double*>(vd+i);
*pc=10;
*pv=11;
}
for(int k=0;k<5;k++)
{
cout<<"cd["<<k<<"]:"<<cd[k]<<endl;
cout<<"vd["<<k<<"]:"<<vd[k]<<endl;
}
}