Форум программистов, компьютерный форум, киберфорум
Наши страницы

const_cast - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Работа с битами http://www.cyberforum.ru/cpp-beginners/thread309832.html
три раза писал но все равно не получается((( 1-)Ввести последовательность из 8 символов. Сравнить 5-й и 6-й биты каждого символа. Если они не равны, то сделать их равными младшему биту, иначе -...
C++ Не могу стартануть "Hello" Здравствуйте. В чем может быть проблема, пишу обычный Привет мир а компилятор ругается на ошибку. #include <iostream> using namespace std; int main() { cout<<"Privet Tipa.\n"; ... http://www.cyberforum.ru/cpp-beginners/thread309801.html
Прямая на плоскости задаётся уравнением ax+by+c=0, где a и b одновременно не равны нулю. C++
Народ! Срочно выручайте: Прямая на плоскости задаётся уравнением ax+by+c=0, где a и b одновременно не равны нулю. Будем рассматривать только прямые , для которых коэффициенты a,b,c-целые числа. Пусть...
Линий в opengl'e C++
Написал код который выводит дисплей на экран и на нем одну линию, ошибки не одной , но почему-то не выводится линия =( Вопрос , почему? Вот код: #include "stdafx.h" #include <windows.h> #include...
C++ Найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна http://www.cyberforum.ru/cpp-beginners/thread309793.html
осталась последняя задача по Си, от неё зависит зачёт. Условия такие: найти такую точку заданного на плоскости множества точек, сумма расстояний от которой до остальных минимальна.
C++ Проверьте прогу на ошибки Задание Создать файл <<tranz>>, который содержит параметры для 15 типов транзисторов, которые имеются на складе. Параметры каждого транзистора являются: название (КТ315Г, КТ814В, КТ302, КТ853А,... подробнее

Показать сообщение отдельно
dihlofos
Бродяга
304 / 258 / 17
Регистрация: 27.08.2010
Сообщений: 553

const_cast - C++

01.06.2011, 09:06. Просмотров 2359. Ответов 6
Метки (Все метки)

День добрый. Пытаюсь вот разобраться как работает данный оператор. Имеется пример:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
 
int main()
{
    const int x = 8;
    
    int * ptr = const_cast<int*>(&x);
    
    std::cout << "Before changing: \n";
    std::cout << "x = " << x << '\n';
    std::cout << "*ptr = " << *ptr << '\n';
    std::cout << "&x = " << &x << '\n';
    std::cout << "ptr = " << ptr << '\n';
    
    *ptr = 9;
    
    std::cout << "\nAfter changing: \n";
    std::cout << "x = " << x << '\n';
    std::cout << "*ptr = " << *ptr << '\n'; // выводит 9
    std::cout << "&x = " << &x << '\n'; // выводит 8
    std::cout << "ptr = " << ptr << '\n';
    
    return 0;
}
После присваивания *ptr = 9, указатель продолжает указывать на x, но почему тогда при выводе *ptr и x получаются разные значения. Т.е. const x каким был таким и остался (8, и это вроде логично), но указатель на него при разыменовании даёт другое число (9). Где эта девятка собственно хранится?

Буду благодарен советам и подсказкам))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru