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

Указатель указывает на несуществующую переменную, но выводит значение - C++

Восстановить пароль Регистрация
 
NanoChely
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 48
21.09.2013, 16:17     Указатель указывает на несуществующую переменную, но выводит значение #1
Вот такой пример нашел в учебнике. В описании сказано, что локальные переменные функции SomeFunction() удаляются сразу после завершения работы функции, тоесть указатель pPointer будет указывать на ячейку памяти в которой уже ничего нету, но почему printf таки вывел 25? В учебнике говориться что 25 не должно выводить.
C++
1
2
3
4
5
6
7
8
9
10
11
#include <stdio.h>
int *pPointer;
void SomeFunction(){
    int nNumber;
    nNumber = 25;
    pPointer = &nNumber;
}
int main(){
    SomeFunction();
    printf("Value of *pPointer: %d\n", *pPointer);
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.09.2013, 16:17     Указатель указывает на несуществующую переменную, но выводит значение
Посмотрите здесь:

Как вывести на экран переменную из функции, которой присваиваеться значение через указатель? C++
C++ Как вывести адресс на который указывает указатель типа char*.
Указатель куда указывает? C++
C++ Узнать указывает ли указатель
Как изменить тип объекта, на который указывает указатель? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Кудаив
329 / 406 / 24
Регистрация: 27.05.2012
Сообщений: 1,163
Завершенные тесты: 2
21.09.2013, 16:29     Указатель указывает на несуществующую переменную, но выводит значение #2
система получает уведомление что память, занимаемую переменной nNumber свободна к перезаписи, но значение 25 не перетирается до использование этой памяти другим процессом - это называется Undefined behavior - неопределенное поведение
NanoChely
0 / 0 / 0
Регистрация: 28.06.2013
Сообщений: 48
21.09.2013, 16:30  [ТС]     Указатель указывает на несуществующую переменную, но выводит значение #3
Ага, тоесть это как бы ссылка на мусор не очищенный. Спасибо.
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
21.09.2013, 16:30     Указатель указывает на несуществующую переменную, но выводит значение #4
Потому что удаляется переменная, а не то место в памяти, где лежит её значение. Переменная — это умозрительное понятие языка программирования. Когда она пропадает, с компьютера просто снимается обязательство содержать значение этой переменной в целости и сохранности в выделенной ячейке. Это не значит, что само значение куда-то пропадает из ячейки..
Yandex
Объявления
21.09.2013, 16:30     Указатель указывает на несуществующую переменную, но выводит значение
Ответ Создать тему
Опции темы

Текущее время: 05:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru