crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в (char*)&
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
Ponchikus Дата 29.6.2015, 22:18
 
Цитата(JohnZ @ 29.6.2015, 22:09) *
Цитата(Ponchikus @ 25.6.2015, 13:18) *
Во-первых. (char*) - это же явное преобразование к типу char? К указателю, типа char. Зачем это тут ?

Потому как ф-ция "read" принимает первый аргумент типа (char*).
Ведь в действительности у тебя float. Нужно привести ? Смотри типы параметров в стандартной С-шной либе.
Цитата
И во-вторых. Для чего тут знак амперсанда (&), т.е. мы передаем адрес переменной float в функцию ??

Да, и приводим его к типу (char*), что ф-ция и просит.

Спасибо Вам !
JohnZ Дата 29.6.2015, 21:09
 
Цитата(Ponchikus @ 25.6.2015, 13:18) *
Во-первых. (char*) - это же явное преобразование к типу char? К указателю, типа char. Зачем это тут ?

Потому как ф-ция "read" принимает первый аргумент типа (char*).
Ведь в действительности у тебя float. Нужно привести ? Смотри типы параметров в стандартной С-шной либе.
Цитата
И во-вторых. Для чего тут знак амперсанда (&), т.е. мы передаем адрес переменной float в функцию ??

Да, и приводим его к типу (char*), что ф-ция и просит.

Ponchikus Дата 25.6.2015, 13:18
  Спасибо вам за ответы!
Только две вещи понять не могу все же.
Во-первых. (char*) - это же явное преобразование к типу char? К указателю, типа char. Зачем это тут ?
И во-вторых. Для чего тут знак амперсанда (&), т.е. мы передаем адрес переменной float в функцию ??
Спасибо!! И спасибо что перенесли куда надо!
ViGOur Дата 25.6.2015, 9:31
  Выравнивание я и упустил как само собой разумеющееся! :)
Для информации можно почитать Расставим точки над структурами C/C++.

А вот к Qt относится только косвенно, согласен, переношу...
Iron Bug Дата 25.6.2015, 9:14
  надо заметить, что при чтении в структуры обычно используют #pragma pack(1).
и что вопрос абсолютно не имеет никакого отношения к Qt, поэтому тему надо перенести в вопросы по С/C++.
ViGOur Дата 25.6.2015, 9:11
  Тут все просто, в x записывается из файла данные размером float.
Другими словами, записал ты в файл число 27,34, таким образом ты можешь его прочитать.

Другой распрастраненный вариант чтения - записи это запись-чтение структуры данных, например:
struct sData
{
    int n;
    float f;
    double d;
    char pBuff[256];
};
sData data;
...
file.read((char*)&data,sizeof(data)
В данном счучае читается структура...
Ponchikus Дата 25.6.2015, 1:09
  Всем привет!

Ребята, частенько вижу, что когда считывают с файла какую-либо информацию, то пишут вот так:

...
float x;
float y;

while(!file.atEnd())
    {file.read((char*)&x,sizeof(x));
    file.read((char*)&y,sizeof(y));
...
}

Скажите, кто знает, пожалуйста, что значит - ((char*)&x,sizeof(x)) . СПАСИБО!
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 19:19