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

непонятки с указателями - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ как в си ++ придать макс и мин значения вводимому числу http://www.cyberforum.ru/cpp-beginners/thread791497.html
Ребята я новичек в си ++ вот задача к примеру с датами связана как зделать так чтобы при вводе даты (почисленно)ее ограничить,к примеру чтобы вводимый месяц было число от 1 до 12,день от 1 до 31??? компилятор если что дев с++
C++ Написать игру. В верхней части экрана летят 3 «звездочки»(***). В нижнем правом углу экрана находиться буква «О» Написать игру. В верхней части экрана летят 3 «звездочки»(***). В нижнем правом углу экрана находиться буква «О». После нажатия любой клавиши она движется вверх. Нужно попасть буквой «O» в среднюю «звездочку» Как это примерно реализовать? Понимаю, что всю программу тут никто писать не будет, просто подскажите, как это сделать средствами Борланда, без графики, через CONIO.H Добавлено через... http://www.cyberforum.ru/cpp-beginners/thread791486.html
Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива C++
3. Дан массив из n элементов. Сожмите массив, выбросив каждый третий его элемент, без использования дополнительного массива. Выведите на экран исходный и измененный массивы. Помогите кто сможет код на С++ составить меню для представления этих задач я уже сделал.
C++ Все положительные элементы замените минимальными. Выведите на экран исходный и полученный массив
2.Задайте массив из n элементов. Все положительные элементы замените минимальными. Выведите на экран исходный и полученный массив. Помогите кто сможет код на С++ составить меню для представления этих задач я уже сделал.
C++ Получите новый массив, каждый элемент которого равен удвоенному числу соответствующего элемента исходного массива, если он больше числа A... http://www.cyberforum.ru/cpp-beginners/thread791474.html
2)Сформировать массив, содержащий n элементов, с помощью чисел, введенных с клавиатуры. Получите новый массив, каждый элемент которого равен удвоенному числу соответствующего элемента исходного массива, если он больше числа A, введенного с клавиатуры, и не изменяется в обратном случае. Выведите на экран исходные и полученные результаты. Добавлено через 11 минут или помогите пожалуйста...
C++ 3. Построить график функции, заданной в индивидуальном задании. Y:=A*EXP(X); 3. Построить график функции, заданной в индивидуальном задании. Y:=A*EXP(X); подробнее

Показать сообщение отдельно
al3xeyku
0 / 0 / 0
Регистрация: 21.02.2013
Сообщений: 5

непонятки с указателями - C++

21.02.2013, 12:38. Просмотров 456. Ответов 15
Метки (Все метки)

Добрый день!
изучаем плюсы, наткнулся на одну странную ситуацию, не могу сообразить, в чём дело...

Есть структура - Point (точка). Есть класс, содержащий указатель на эту структуру...
Оператор Point() - для неявного преобразования.

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
25
26
27
28
29
30
31
struct Point{
    float               x;
    float               y;
};
 
class CPointSaver
{
public:
    CPointSaver(void);
    ~CPointSaver(void);
    CPointSaver(Point point)
    {
        p = &point;
    }
    CPointSaver(Point *point)
    {
        p = point;
    }
    // неявно возвращает указатель на Point
    operator Point*() const
    {
        return p;
    }
 
    Point* GetPointPtr() const // тоже самое, что и оператор выше
    {
        return p;
    }
private:
    Point *             p; // указатель на Point
};
код программы:
C++
1
2
3
4
5
6
7
8
9
    Point p1 = {1, 2};
    Point p2 = {5, 6};
    Point p3 = {7, 9};
 
    CPointSaver ps1 = p1; // содержит указатель на p1
 
    Point* pp1 = ps1.GetPointPtr();
    Point* pp2 = ps1.GetPointPtr();
    Point* pp3 = ps1.GetPointPtr();
сначала я создаю Point'ы. Затем создаю экземпляр CPointSaver, срабатывает конструктор и ps1 хранит указатель на p1. Всё норм.
Но, как только выполняется
C++
1
Point* pp1 = ps1.GetPointPtr();
, значение указателя в ps1 почему-то меняется и он начинает указывать на мусор
причём ничего не изменится, если мы напишем:
C++
1
Point* pp1 = ps1;
ума не приложу, почему так происходит

подскажите, пожалуйста.

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