0

我正在阅读一些代码,其中有时会发生将整数引用值转换为与 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*) 如果不是,有什么区别??

4

1 回答 1

1

char *并且const char *是不同的类型。char *是指向 char 的指针,并且const char *是指向不能通过指针修改的 char 的指针。

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

于 2017-02-22T06:30:05.137 回答