我正在阅读一些代码,有时会将整数引用值转换为与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 *)如果没有,有什么不同?
答案 0 :(得分:1)
char *
和const char *
是不同的类型。 char *
是指向char的指针,const char *
是指向无法通过指针修改的char的指针。
在您的示例中,(const char*)&val
将获取val
的地址,并将其视为指向char的指针,该数据无法修改。它保证write
函数不会修改数据(但只是将其写入其他地方)。传递(char*)&val
作为参数并不能保证这一点。然后,write
可能会覆盖您的val
。