С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/15: Рейтинг темы: голосов - 15, средняя оценка - 4.87
3 / 3 / 1
Регистрация: 26.04.2016
Сообщений: 69
1

Адрес переменной к типу (char*)

18.01.2017, 00:33. Показов 2805. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Для "запоминания" данных переменных можно использовать сериализацию аля:
C++
1
2
3
int i = 12;
ofstream f("text.txt");
f.write((char*)&i,sizeof(i));
Почему когда мы приводим адрес переменной к типу (char*) мы получаем значение этой пременной в бинарном виде?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.01.2017, 00:33
Ответы с готовыми решениями:

Адрес переменной char не выводится
Здравствия всем, люди добрые подскажите пожалуйста, что я как обычно делаю неправильно. int x =...

Как получить адрес переменной типа unsigned char?
Всем привет! Как получить адрес переменной типа unsigned char? Всё ерунда получается #include...

Сделать преобразование unsigned char в char, а затем типу int
Здраствуйте, есть вопрос: Число представлено двумя полями: типа long для рублей и unsigned char -...

Вопросы по типу char
Читаю книгу Страуструпа. Дошёл до типа char. В книге приводится такой пример: #include...

4
14 / 14 / 14
Регистрация: 15.08.2016
Сообщений: 52
18.01.2017, 00:46 2
Если я правильно помню, нужно приводить к типу char* потому, что char - однобайтовый тип, следовательно char* в данном случае - строка байт, которые записываются в файл
0
Эксперт .NET
6510 / 4086 / 1606
Регистрация: 09.05.2015
Сообщений: 9,553
18.01.2017, 00:52 3
Совершенно не важно к какому типу вы приводите адрес переменной (главное чтобы тип являлся указателем), важен только сам адрес и размер переменной. Тут приведение типа по большей части потому, что ofstream::write ожидает что тип аргумента const char*. Машинный код ничего не знает про ваши типы, он оперирует адресами.
0
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
18.01.2017, 01:07 4
Лучший ответ Сообщение было отмечено dima19972525 как решение

Решение

Цитата Сообщение от dima19972525 Посмотреть сообщение
Почему когда мы приводим адрес переменной к типу (char*) мы получаем значение этой пременной в бинарном виде?
Никакого значения мы не получаем. Мы просто оформляем адрес переменной, как адрес абстрактного куска данных void. Чисто чтоб компилятор не ругался что бумажки неправильно оформлены. Вы, конечно, можете спросить какая связь между char и void. А связи нету, просто автор сигнатуры write маялся с похмелья и перепутал слова.

Добавлено через 5 минут
Цитата Сообщение от Someone007 Посмотреть сообщение
Совершенно не важно к какому типу вы приводите адрес переменной (главное чтобы тип являлся указателем), важен только сам адрес и размер переменной.
Как раз важно - к void* указатели приводятся сами, а к char* - после описанных ТС приседаний. Зачем эта утренняя зарядка была нужна - загадка.
1
859 / 448 / 112
Регистрация: 06.07.2013
Сообщений: 1,491
18.01.2017, 11:06 5
Цитата Сообщение от Renji Посмотреть сообщение
А связи нету, просто автор сигнатуры write маялся с похмелья и перепутал слова.
Ну вообще при работе с буферами char* удобно использовать для дебага (видишь что в буфере) и для обращения через [], видимо он тестил свой write когда его пилил, и так и оставил
0
18.01.2017, 11:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.01.2017, 11:06
Помогаю со студенческими работами здесь

Как адрес IP перевели к типу int 32
Добрый день. Прошу помощи во следующему вопросу: Изучаю программу по передачи данных...

Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной - адрес переменной - значение п
Создать две переменных, ввести их с клавиатуры. Вывести строки: имя переменной - адрес переменной...

Преобразования массива с типа int к типу char
Помогите решить задачу. Требуется создать шаблон класса для преобразования массива с типа int к...

Как присвоить типу char значение string?
При выполнении строки w.at(1)=l; выдает error2440 cannot convert from std::string to char как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru