Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.03.2013, 22:59   #1
Антон-Царевич
Пользователь
 
Регистрация: 07.03.2012
Сообщений: 13
По умолчанию Вот это поворот!

Код:
class a
{
  b* c;
  d* e;
  a()
  {
    c=malloc(20);
    e=malloc(25);
  }
  void func()
  {
    // debug: c = 0x00fa1234. e = 0xcccccccc
  }
}
а* g;
g=new а();
// debug: g->c = 0x00fa1234. g->e = 0x00fa123c .

g->func();
куда пропадает значение указателя е ? как заставить его сохраниться?

Последний раз редактировалось Антон-Царевич; 08.03.2013 в 23:57.
Антон-Царевич вне форума Ответить с цитированием
Старый 08.03.2013, 23:32   #2
ROD
Linux C++ Qt ARM
Старожил
 
Аватар для ROD
 
Регистрация: 30.11.2008
Сообщений: 3,030
По умолчанию

Создаем указатель на объект класса "a".
Создаем новый объект класса "a" и присваиваем его адрес указателю.
Используем функцию класса.
Дилетант широкого профиля.

"Слова ничего не стоят - покажите мне код!" © Линус Торвальдс
ROD вне форума Ответить с цитированием
Старый 08.03.2013, 23:55   #3
Антон-Царевич
Пользователь
 
Регистрация: 07.03.2012
Сообщений: 13
По умолчанию

да, но куда успевает пропасть значение переменной?

Последний раз редактировалось Антон-Царевич; 09.03.2013 в 00:10.
Антон-Царевич вне форума Ответить с цитированием
Старый 09.03.2013, 00:12   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
#include <iostream>
#include <cstdlib>

class A
{
  char* c;
  char* e;
public:
  A() : c(0), e(0)
  {
    c = (char *) malloc(20);
    e = (char *) malloc(25);
    std::cout << int(c) << " " << int(e) << std::endl;
  }
  void func()
  {
    std::cout << int(c) << " " << int(e) << std::endl;
  }
};

int
main()
{
    A* g;
    g = new A();
    g->func();
    return 0;
}
Выводит одинаковые адреса (чуть изменил код, чтобы скомпилировалось).
ПС Я не знал, что Вы пишите на C#, поэтому компилировал, как C++ программу.
http://www.youtube.com/watch?v=gNl-jwfzKpY
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )

Последний раз редактировалось BDA; 09.03.2013 в 00:48.
BDA на форуме Ответить с цитированием
Старый 09.03.2013, 00:13   #5
Антон-Царевич
Пользователь
 
Регистрация: 07.03.2012
Сообщений: 13
По умолчанию

после пересоздания проекта вроде норм. Всё было из-за хеадеров
Антон-Царевич вне форума Ответить с цитированием
Старый 09.03.2013, 00:15   #6
Антон-Царевич
Пользователь
 
Регистрация: 07.03.2012
Сообщений: 13
По умолчанию

у меня там походу хеадеры что-то портили
Антон-Царевич вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
решить вот это Евгений77777 Помощь студентам 4 15.02.2012 22:50
Вот это задачка!!! Лёха Паскаль, Turbo Pascal, PascalABC.NET 2 29.04.2008 10:54