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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
St-Voland
171 / 79 / 3
Регистрация: 05.12.2012
Сообщений: 217
#1

int\ volatile int \ const int - C++

29.12.2012, 16:57. Просмотров 415. Ответов 2
Метки нет (Все метки)

Товарищи, паника! Имеется код:
C++
1
2
3
4
5
6
7
8
9
10
    int a = 5;
    std::cout << "Init value a: " << a << "\n";
    int *p;
    p = (int*) &a;
    *p = 0;
    std::cout << "*p = " << *p << "\n";
    std::cout << "New value a: " << a << "\n";
    std::cout << "p = " << p << "\n";
    std::cout << "Adress of a: " << &a << "\n";
    return 0;
Ну тут вроде все корректно и хорошо, нет претензий к работе. Начинаем дописывать что-то еще:

C++
1
2
3
4
5
6
7
8
9
10
    volatile int a = 5;
    std::cout << "Init value a: " << a << "\n";
    int *p;
    p = ( int* ) &a;
    *p = 0;
    std::cout << "*p = " << *p << "\n";
    std::cout << "New value a: " << a << "\n";
    std::cout << "p = " << p << "\n";
    std::cout << "Adress of a: " << &a << "\n";
    return 0;
По необъяснимым для меня причинам, адрес а = 1. Хотя как я понимаю, волатиль защищает от такой неявной замены. Думал, что проблема в том что р - не типа волатиль. Решил попробовать:

C++
1
2
3
4
5
6
7
8
9
10
    volatile int a = 5;
    std::cout << "Init value a: " << a << "\n";
    volatile int *p;
    p = ( volatile int* ) &a;
    *p = 0;
    std::cout << "*p = " << *p << "\n";
    std::cout << "New value a: " << a << "\n";
    std::cout << "p = " << p << "\n";
    std::cout << "Adress of a: " << &a << "\n";
    return 0;
Теперь р тоже равен 1.
Кажется уже понял, как и почему ведет себя программа при константной а( Прошу поправить если неправ ):
Когда мы пишем const a, программа не сверяет своего значения с а. Т.е. оно запомнило, что оно равно 5 и больше к нему не обращается. Т.е. оно его где-то запоминает. В таком случае назревает вопрос: Где?
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2012, 16:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос int\ volatile int \ const int (C++):

int const * const foo(const int* param) const - разъясните значение квалификаторов - C++
int const * const foo(const int* param) const -----1------2----------3----------------4 1: ? 2: делает содержимое массива или...

error: invalid operands of types 'const int*' and 'const int*' to binary 'operator+' - C++
Что означает ошибка в 8 строчке error: invalid operands of types 'const int*' and 'const int*' to binary 'operator+'? ...

Error LNK2019: unresolved external symbol "public: __thiscall Vector<int>::Vector<int>(int,int,int)" (?0?$Vec - C++
Вот есть заголовочный файл // Заголовочный файл Vector.h #ifndef VECTOR_H #define VECTOR_H #include &lt;iostream&gt; using...

Чем отличаются выражения (const int[]){value} от (const int[]){100} - C++
(const int){22} //Приведение к массиву и инициализация его значениями 22 от (const int){i} //Приведение к массиву и инициализация его...

int const и const int в чем разница этих записей - C++
Попалась мне тут программа для выборочно сортировки, с ней все в принципе ясно, но я в ней встретил записи, которые раньше не встречал,...

Преобразовать int в const int для установки размера массива - C++
Добрый вечер всем! Столкнулся с такой нестандартной проблемой. Нужно преобразовать значения типа int в const int, чтоб константная...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
diagon
Higher
1929 / 1195 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
29.12.2012, 17:02 #2
Проблема в выводе. Почитайте: [Задача] const volatile
1
St-Voland
171 / 79 / 3
Регистрация: 05.12.2012
Сообщений: 217
29.12.2012, 17:07  [ТС] #3
Спасибо, это надо запомнить По поводу конста еще непонятно, но это уже мелочи))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.12.2012, 17:07
Привет! Вот еще темы с ответами:

Ошибка при компиляции error: cannot convert ‘int (*)[5]’ to ‘int**’ for argument ‘1’ to ‘void Replase(int**)' - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; #include &lt;iomanip&gt; #include &lt;cstdlib&gt; #define row 5 #define col 5 using namespace...

В каком случае надо начинать с int main() или с int _tmain( int argc, _TCHAR* argv[] ) и т.д.? - C++
Не понимаю, с чего начинать. Заранее спс.

[Linker Error] Unresolved external 'Sort(int near*near ,int, int) - C++
не могу понять в чем ошибка при компиляции ошибок не выдает при запуске программы - выдает эту ошибку Unresolved external 'Sort(int...

int main() и int _tmain(int argc, _TCHAR* argv[]) - C++
При создании нового консольного приложения Microsoft Visual С++ 2010 Express создает начальный шаблон #include &quot;stdafx.h&quot; int...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru