将整数引用值转换为(const char *)的效果是什么?在c ++中转换为char *和转换为const char *之间的区别是什么?

时间:2017-02-22 06:14:39

标签: c++ c++11 casting const const-char

我正在阅读一些代码,有时会将整数引用值转换为与ostream一起使用的const char *。

uint32_t val;// initialized by some value
void a(ostream& os) const{
     os.write((const char*)&val, sizeof(val));
}

1)将整数引用类型转换为(const char *)??

会产生什么影响

2)和使用(char *)& val一样使用(const char *)??

2 *)如果没有,有什么不同?

1 个答案:

答案 0 :(得分:1)

char *const char *是不同的类型。 char *是指向char的指针,const char *是指向无法通过指针修改的char的指针。

在您的示例中,(const char*)&val将获取val的地址,并将其视为指向char的指针,该数据无法修改。它保证write函数不会修改数据(但只是将其写入其他地方)。传递(char*)&val作为参数并不能保证这一点。然后,write可能会覆盖您的val