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

Копирование списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Криво выводит результаты программы в файл http://www.cyberforum.ru/cpp-beginners/thread1045055.html
Приветствую=) Собственно говоря весь вопрос в заголовке. Дело в том что на экран выводит верную информацию а в файл какую-то ерунду. Просьба помочь разобраться)) #include <iostream.h> #include <stdio.h> #include <math.h> #include <stdlib.h> #include <time.h> void vvod (int*a, int n); void vivod (int*a, int n);
C++ передача параметра Здравствуйте, подскажите как в делегат ThraedStart передать параметр, можно ли это сделать вообще? http://www.cyberforum.ru/cpp-beginners/thread1045045.html
Написать формулу на C++ C++
Здравствуйте. Помогите пожалуйста с кодом на эту задачу.
Програма которая выводит слова с парным количеством букв C++
Нужно сделать программу которая выводит слова с парным количеством букв. Слова вводятся через клавиатуру. Нужно сделать на C++.
C++ Разработать функции для работы с комплексными числами http://www.cyberforum.ru/cpp-beginners/thread1045030.html
Ребята, помогите пожалуйста. Сам я не справлюсь. Задание: Разработать функции для работы с комплексными числами: - вывод комплексного числа - сложение к.ч. - умножение к.ч. - вычитание к.ч. - деление к.ч. - перевод к.ч. в тригонометрическую форму из алгебраической - перевод к.ч. алгебраическую форму из тригонометрической
C++ Бинарные ддп собственно, Как они заполняются?( бинарные деревья двоичногго поиска). что передается в ф-ю и как потомьвыводить всё то на экран? точнее, как это будет выглядеть подробнее

Показать сообщение отдельно
egor2116
 Аватар для egor2116
337 / 368 / 42
Регистрация: 20.01.2013
Сообщений: 1,100
17.12.2013, 13:36     Копирование списка
я не очень понял где и какая ошибка
Ошибка в том, что в примере выделяется память для указателя var1,
C++
1
2
int * var1 = new int;
    *var1 = 10;
а потом якобы пытаетесь скопировать в другой указатель не выделяя для него памяти
C++
1
int * var2 = var1;
, таким образом два указателя указывают на одну область памяти и изменение любого из этих указателей приводит к изменению и второго
C++
1
2
3
4
5
std::cout << *var2 << std::endl;
    
    ++(*var2);
    
    std::cout << *var1 << std::endl;
Часто это ошибка непонимания или невнимательности и потом приходится долго мучатся что бы найти её,
а исправление в данном примере это выделить память отдельно для var1 и var2 и потом копировать значения а не адреса памяти, примерно так
C++
1
2
3
4
5
6
7
8
9
10
int * var1 = new int;
    *var1 = 10;
    int * var2 = new int;
      *var2 = *var1;
    
    std::cout << *var2 << std::endl;
    
    ++(*var2);
    
    std::cout << *var1 << std::endl;
теперь изменение var2 не приводит к изменению var1.
 
Текущее время: 16:40. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru