Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Присвоение указателю арифметического выражения

35K
16 августа 2009 года
yuri201
15 / / 24.07.2008
Имеется указатель:
BYTE *db;
Выделяется память:
db=new BYTE[сумма sizeof() различных структур];
Затем указателю на структуру присваивается:
_tels *tels=(_tels*)(db+sizeof(_mystruc));
Вопрос: можно ли теперь использовать tels? Например вот так:
MessageBox(NULL,tels->marka,"АВТО",MB_OK);
Компилируется нормально (VC++ 6), однако при запуске программа аварийно завершается.
Или может есть другое решение?
2.1K
16 августа 2009 года
Norgat
452 / / 12.08.2009
а зачем sizeof? через массив из элементов класса _tels не получиться сделать?

как то так:

Код:
#include <iostream>
#include <conio.h>

using namespace std;

class _tels
{
public:
    int a;
    char c;
    double d;
    _tels(int a1,char c1,double d1)
    {
        a = a1;
        c = c1;
        d = d1;
    }
    _tels(){}
};

void main()
{
_tels *T = new _tels[6];
for(int i = 0;i < 6; ++i)
    T = _tels(i,'a'+i,(i - 0.1));

_tels *tels = (_tels*)(2 + T);
cout << T->a << ' ' << T->c << ' ' << T->d << endl;
cout << tels->a << ' ' << tels->c << ' ' << tels->d << endl;
_getch();
delete[] T;
}



п.с. собирал в VS2008 express

п.с.с. и ещё... начинать название своего класса с '_' или "__" не оч. хорошо... так обычно обозначают макросы.
35K
16 августа 2009 года
yuri201
15 / / 24.07.2008
Вопрос закрыт.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог