当我们将它写入文件时,为什么我们必须将所有东西都转换为char *?

问题描述:

出于好奇,当我们将它写入(二进制)文件时,为什么我们要将某些东西转换为char *?当我们将它写入文件时,为什么我们必须将所有东西都转换为char *?

因为写入的典型I/O函数,需要一个指向char的指针。这是因为有人认为这是谈论存储在二进制文件中的数据的最有代表性的方式;它只是一个机器最小的可寻址单词,依次排列。 C类型的名称是char

char*仅表示指向字节序列开始的指针,这正是人们期望二进制文件包含的指针。

Unwind和vezult已经回答了你的问题,并且我假设你知道指针是什么。但是,如果你想*把某些东西转换成字符**作为一种实际上以某种方式改变你的内存中的数据的操作(并且,例如,如果有大量数据可能需要更多时间),那么注意不是这样的:获取指针的行为。

你在说什么fread()fwrite()?他们读取或写入的数据以void*(或const void*)的形式传递,因此您不必转换。

但是在使用C++时,如istream::read(),则指向接收缓冲区的指针必须作为char*传递,因此不存在隐式转换。