出于好奇,我们为什么在将它写入(二进制)文件时将某些内容转换为char *?
答案 0 :(得分:15)
因为写入的典型I / O函数,所以指向char
。这是因为有人认为最有代表性的方式是讨论存储在二进制文件中的数据;它只是机器中最小的可压缩字的一堆,按顺序排列。其类型名称为char
。
答案 1 :(得分:7)
char*
仅表示指向字节序列开头的指针,这正是人们期望二进制文件包含的内容。
答案 2 :(得分:2)
Unwind和vezult已经回答了你的问题,我猜你知道指针是什么。但是,如果您认为*将某些内容转换为char **作为一种实际上以某种方式更改内存中数据的操作(例如,如果有大量数据可能需要更多时间),那么请注意这是不获取指针的行为。
答案 3 :(得分:2)
您在谈论fread()
和fwrite()
吗?他们读取或写入的数据将作为void*
(或const void*
)传递,因此您无需转换。
但是在使用C ++时,比如istream::read()
,那么指向接收缓冲区的指针必须作为char*
传递,因此没有隐式转换。