数据类型转换问题

[复制链接]
 楼主| txcy 发表于 2013-7-28 12:33 | 显示全部楼层 |阅读模式
#include <iostream>

int compare(const int* arg1,const int *arg2)
{
    *(int*)arg1=4;
    return *(const int*)arg1-*(int*)arg2;
}
int main(){
    int a=1;
    int b=2;
    compare(&a,&b);
   
}
上面代码运行后a=4.
*(int*)arg1=4;这里可以强制转的?那和const_cast<int*>有什么区别?
无冕之王 发表于 2013-7-28 12:43 | 显示全部楼层
int *)强转和const_cast<int *>是两回事
因为a是一个常量,不能对它进行改变,
使用const_cast可以返回一个指向非常量的指针指向a2,就可以通过该指针(或引用)对它进行任意改变。
hsbjb 发表于 2013-7-28 13:06 | 显示全部楼层
const就相当于windows头文件里泛滥的IN,OUT宏,只是个占位符而已。
秋天落叶 发表于 2013-7-28 13:09 | 显示全部楼层
不建议这样做。。。
sinadz 发表于 2013-7-29 16:03 | 显示全部楼层
无冕之王 发表于 2013-7-28 12:43
int *)强转和const_cast是两回事
因为a是一个常量,不能对它进行改变,
使用const_cast可以返回一个指向非常 ...

解释的已经很清楚了
秋天落叶 发表于 2013-7-29 16:18 | 显示全部楼层
要养成良好的编程习惯,不建议这样做
hsbjb 发表于 2013-7-29 22:32 | 显示全部楼层
又在纠结const的问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

274

主题

2106

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部