20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
1

Преобразование указателей

24.12.2015, 20:52. Показов 447. Ответов 3
Метки нет (Все метки)

Люди добрые, прокомментируйте поЖалуйста.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
using namespace std;
 
void myfunc(unsigned long int ptr)
{
        *(float*)ptr=83.1;
}
int main()
{
      float a=3.14;
      unsigned long int i =(unsigned long int)&a;
      myfunc(i);
      cout<<a<<endl;
      system("pause");
      return 0;
}
Программа работает, но что здесь происходит не пойму.
void-- не должна возвращать значение.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2015, 20:52
Ответы с готовыми решениями:

Преобразование указателей
Выводит дерево вместо адреса int x = 5; int *p; p = &amp;x; cout &lt;&lt; p &lt;&lt; endl; ...

Преобразование указателей на функции
Добрый вечер, очень давно я не объявлялся. Буквально несколько месяцев даже не садился прогать за...

Задачка на понимание указателей, преобразование типов
Написать функцию, принимающую вещественное число типа float, превращающую его в целое типа int с...

Нюансы арифметики указателей: преобразование к char* при вычислении сдвига
Добрый день! Вчера, при чтении темы возник вопрос различия между указателями и массивами. В теме...

3
Эксперт PHP
3047 / 2551 / 1200
Регистрация: 14.05.2014
Сообщений: 7,138
Записей в блоге: 1
24.12.2015, 21:04 2
gogaloh,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
 
void myfunc(unsigned long int ptr)
{
    // берем значение типа unsigned long и преобразовываем его
    // в адрес, хранящий значение типа  float, т.е. к указателю на float
    // затем разыменовываем этот указатель и кладем в него значение типа float
    *(float*)ptr=83.1;
}
int main()
{
    float a=3.14;
    // значение адреса переменной типа float приводится к типу unsigned long
    unsigned long int i =(unsigned long int)&a;
    // и передается в функцию
    myfunc(i);
    cout<<a<<endl;
    system("pause");
    return 0;
}
1
20 / 27 / 1
Регистрация: 14.03.2015
Сообщений: 792
24.12.2015, 21:12  [ТС] 3
Kerry_Jr, Спасибо, утром еще раз прочитаю.
0
Эксперт PHP
3047 / 2551 / 1200
Регистрация: 14.05.2014
Сообщений: 7,138
Записей в блоге: 1
24.12.2015, 21:15 4
gogaloh,
Цитата Сообщение от Kerry_Jr Посмотреть сообщение
затем разыменовываем этот указатель и кладем в него значение типа float
немного непонятно написал, правильнее будет так и кладем в ячейку с этим адресом новое значение типа float
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2015, 21:15

Почему в сортировке указателей на объекты в вызове функции используются адреса объектов, а не указателей?
Доброго времени суток! Рассматриваю пример (из Лафоре) сортировки массива указателей на объекты,...

Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей
Задача: создать специфицированный шаблон функции, принимающей массив указателей на char и...

Объяснить различия в работе указателей на целое число и указателей на const char (строки в стиле Си)
Уважаемые программисты, возникло несколько вопросов касательно указателей. Почему при выводе...

Создать специализацию для шаблона, которая принимает массив указателей на строки и количество этих указателей
Нужно создать специализацию для шаблона, которая принимает массив указателей на строки и количество...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru