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

Странное поведение указателя - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Составить программу для нахождения победителей соревнования http://www.cyberforum.ru/cpp-beginners/thread1086682.html
на соревнованиях по рыбной ловле победителем признается участник, вес пойманной рыбы у которого максимален . Если несколько человек поймали одинаковое количество рыбы, все они признаются победителями. Составить программу для нахождения победителей соревнования. Необходимо использовать функции для получения решения. В главной программе производится ввод данных , вызов функции и вывод результатов.
C++ Рисование звездочками в матрице Ребят, помогите пожалуйста. Программа должна ,типо, рисовать звездочками но обязательно в матрице , а выдает билиберду помогите пожалуйста #include <iostream> #include <windows.h> #include <locale.h> #include <conio.h> #define UP_ARROW 72 http://www.cyberforum.ru/cpp-beginners/thread1086678.html
C++ Понятия инкапсуляции, полиморфизма и наследования
Всем привет. Прошу прояснить для себя 3 основных свойства парадигмы ООП инкапсуляцию, наследования и полиморфизм. Я напишу своё видение и живой пример, как эта парадигма притворена в жизнь, хочу знать правильны ли мои суждения или нет. Инкапсуляция - это скрытие реализации. Пример из реальной жизни: У нас есть объект - домашний стационарный телефон, у которого есть функция "позвонить(номер...
C++ Решение неравенства
Задание. Написать программу для решения заданной задачи. В решении обязательно предусмотреть все возможные случаи соотношения параметров задачи, в том числе и случаи, когда задача не имеет решений. Предусмотреть ввод исходных данных с клавиатуры и вывод результатов на экран. Для произвольных значений a, b вычислить решение системы неравенств solvo a/(x-b)<0 && bx>0 Добавлено через 3 часа 7...
C++ Скачал прогу, хотел поставить. Прога выкинула флаг- требуется отладка с помо визуал студио http://www.cyberforum.ru/cpp-beginners/thread1086646.html
Иначе она не станет. Я согласился. Прога вызвала студию, или студия вызвалась- я не знаю. Очень прикольно и неожиданно. Только что делать? Пожалуйста разъясните!
C++ Задача с классами С++ Указать на начало списка (список-множество) Методы Найти значение в множестве ( ф-я возвращает 1,если значение найдено, и 0 - в противном случае Добавить значение в мн-во ( если знач. уже есть в мн-ве ,то оно в мн-во не добавляется. Для проверки используйте функцию "найти значение в мн-ве" Вывести текущее состояние в мн-ве (вывести все зн-я) подробнее

Показать сообщение отдельно
scrat2013
2 / 2 / 1
Регистрация: 17.10.2013
Сообщений: 33

Странное поведение указателя - C++

31.01.2014, 22:36. Просмотров 234. Ответов 4
Метки (Все метки)

Здравствуйте, наткнулся на непонятное мне поведение указателя или точнее менеджера памяти. Есть код:
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>
#include <conio.h>
 
void func();
 
int *p = 0;
int *e = 0;
 
int main()
{
    func();
    std::cout << *p << '\n';
    std::cout << *p << '\n';
    getch();
}
 
void func()
{
    int a[10];
    a[3] = 35;
    p = &a[3];
    std::cout << *p << '\n';
    return;
}
По идее он должен вывести:
35
(мусор)
(мусор)

Или вылететь... Но выводится:
35
35
0

Не мог бы мне кто-нибудь объяснить почему такой вывод.
Ведь выходя из функции массив должен удалиться, а так как указатель все еще указывает на его элемент, то должен вывестись мусор.

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