(char*)& |
Здравствуйте, гость ( Вход | Регистрация )
(char*)& |
Ponchikus |
25.6.2015, 1:09
Сообщение
#1
|
Студент Группа: Участник Сообщений: 21 Регистрация: 25.6.2015 Пользователь №: 4411 Спасибо сказали: 0 раз(а) Репутация: 0 |
Всем привет!
Ребята, частенько вижу, что когда считывают с файла какую-либо информацию, то пишут вот так:
Скажите, кто знает, пожалуйста, что значит - ((char*)&x,sizeof(x)) . СПАСИБО! |
|
|
ViGOur |
25.6.2015, 9:11
Сообщение
#2
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Тут все просто, в x записывается из файла данные размером float.
Другими словами, записал ты в файл число 27,34, таким образом ты можешь его прочитать. Другой распрастраненный вариант чтения - записи это запись-чтение структуры данных, например: В данном счучае читается структура...
|
|
|
Iron Bug |
25.6.2015, 9:14
Сообщение
#3
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
надо заметить, что при чтении в структуры обычно используют #pragma pack(1).
и что вопрос абсолютно не имеет никакого отношения к Qt, поэтому тему надо перенести в вопросы по С/C++. |
|
|
ViGOur |
25.6.2015, 9:31
Сообщение
#4
|
Мастер Группа: Модератор Сообщений: 3296 Регистрация: 9.10.2007 Из: Москва Пользователь №: 4 Спасибо сказали: 231 раз(а) Репутация: 40 |
Выравнивание я и упустил как само собой разумеющееся!
Для информации можно почитать Расставим точки над структурами C/C++. А вот к Qt относится только косвенно, согласен, переношу... |
|
|
Ponchikus |
25.6.2015, 13:18
Сообщение
#5
|
Студент Группа: Участник Сообщений: 21 Регистрация: 25.6.2015 Пользователь №: 4411 Спасибо сказали: 0 раз(а) Репутация: 0 |
Спасибо вам за ответы!
Только две вещи понять не могу все же. Во-первых. (char*) - это же явное преобразование к типу char? К указателю, типа char. Зачем это тут ? И во-вторых. Для чего тут знак амперсанда (&), т.е. мы передаем адрес переменной float в функцию ?? Спасибо!! И спасибо что перенесли куда надо! |
|
|
JohnZ |
29.6.2015, 21:09
Сообщение
#6
|
Участник Группа: Участник Сообщений: 139 Регистрация: 19.7.2014 Пользователь №: 4190 Спасибо сказали: 10 раз(а) Репутация: 0 |
Во-первых. (char*) - это же явное преобразование к типу char? К указателю, типа char. Зачем это тут ? Потому как ф-ция "read" принимает первый аргумент типа (char*). Ведь в действительности у тебя float. Нужно привести ? Смотри типы параметров в стандартной С-шной либе. Цитата И во-вторых. Для чего тут знак амперсанда (&), т.е. мы передаем адрес переменной float в функцию ?? Да, и приводим его к типу (char*), что ф-ция и просит. |
|
|
Ponchikus |
29.6.2015, 22:18
Сообщение
#7
|
Студент Группа: Участник Сообщений: 21 Регистрация: 25.6.2015 Пользователь №: 4411 Спасибо сказали: 0 раз(а) Репутация: 0 |
Во-первых. (char*) - это же явное преобразование к типу char? К указателю, типа char. Зачем это тут ? Потому как ф-ция "read" принимает первый аргумент типа (char*). Ведь в действительности у тебя float. Нужно привести ? Смотри типы параметров в стандартной С-шной либе. Цитата И во-вторых. Для чего тут знак амперсанда (&), т.е. мы передаем адрес переменной float в функцию ?? Да, и приводим его к типу (char*), что ф-ция и просит. Спасибо Вам ! |
|
|
Текстовая версия | Сейчас: 18.4.2024, 5:35 |