Сегодня в классе CS 111 мой инструктор закончил «краткий» взгляд на запись структур в двоичные файлы. Я говорю коротко, потому что он просто включил его в какую-то сторону, заявив, что это не будет в финале. Проблема в том, что я не совсем понимаю, что происходит в примере программы, и это беспокоит меня. Надеюсь, кто-то найдет время, чтобы объяснить это мне. Код выглядит следующим образом:Тип приведения указателя при записи в двоичный файл в C++
#include <iostream>
#include <fstream>
using namespace std;
struct PayStub
{
int id_num;
bool overtime;
float hourly_rate;
};
int main()
{
PayStub info = {1234, false, 15.45};
ofstream data_store;
data_store.open("test.cs111", ios::binary);
char *raw_data = (char*)&info;
data_store.write(raw_data, sizeof(PayStub));
data_store.close();
return 0;
}
Я не понимаю, что происходит конкретно в заявлении char *raw_data = (char*)&info;
и почему это необходимо. Я понимаю, что указатель на char объявляется и инициализируется, но что именно он инициализируется и как это используется в следующей строке? Надеюсь, это не глупый вопрос. Заранее спасибо за вашу помощь.
[address_of] (http://en.cppreference.com/w/c/language/operator_member_access#Address_of) – Drop
Он * считывает * содержимое содержимого в виде байтового массива, что приводит к конкретному значению реализации с заполнением и endianness, представление с плавающей запятой ... – Jarod42
«краткая и не переносная»: p – Alnitak