打印

数据类型转换问题

[复制链接]
800|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 | 只看该作者
不建议这样做。。。

使用特权

评论回复
5
sinadz| | 2013-7-29 16:03 | 只看该作者
无冕之王 发表于 2013-7-28 12:43
int *)强转和const_cast是两回事
因为a是一个常量,不能对它进行改变,
使用const_cast可以返回一个指向非常 ...

解释的已经很清楚了

使用特权

评论回复
6
秋天落叶| | 2013-7-29 16:18 | 只看该作者
要养成良好的编程习惯,不建议这样做

使用特权

评论回复
7
hsbjb| | 2013-7-29 22:32 | 只看该作者
又在纠结const的问题

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

274

主题

2106

帖子

0

粉丝