我有以下功能:
void IBinary::writeb( std::ostream& out, double x )
{
out.write( (char*)&(x), sizeof(double) );
}
这将获取 的地址x
并将其转换为 type 的指针char*
。我不明白第一个参数如何/为什么write
是 type char*
,即使我正在将 a 写入double
文件。writeb
该函数有几个重载,所有重载都转换为char*
.
那不就相当于:
double x = 3.14;
char* c;
c = (char*)&(x); // ah!
我的猜测是这行得通,因为我们也传递了double
to的大小ostream::write
。在我的计算机上,大小char
为 1 字节,但这并不总是正确的。
因此,为什么无论写入什么类型的变量, ostream::write
expect的第一个参数都是?char*