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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2011, 12:25   #1
GerNick
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 14
Вопрос SIZEOF?

Привет всем мозговитым программистам!!!
Не знаю как сделать, помогите мне пжста.

Код:
//
sObject Obj_input_Dx=
{
    Obj_input_Dx.passw_access=true,//
    Obj_input_Dx.write_access=false,//
    Obj_input_Dx.read_access=true,//
    Obj_input_Dx.count=5,//
    Obj_input_Dx.p_var= input_Dx,//
    Obj_input_Dx.p_Rd_var= rd_var,//
    Obj_input_Dx.p_Wr_var= 0,//
};
...
//
int * Data_mapping[]=
{
    0,        //0
    (int *) &Obj_input_Dx,//1
    ...
    0,          //6
    ...
    0
};
//
struct sObject
{
    short passw_access;//
    short write_access;//
    short read_access;//
    short count;//
    short * p_var;//
    int (* p_Rd_var)(short *, short, unsigned short *);
    int (* p_Wr_var)(short *, short, unsigned short *);
};

main()
{
...
//по протоколу выясняю Address и обращаюсь к массиву указателей.
Но мне необходимо ограничиться значением индекса Address, если Data_mapping[Address] будет обращение за пределы массива.
При определении массива Data_mapping[] индекс не определён

    sObject * OBJECT; //
    OBJECT = ( sObject * ) Data_mapping[Address];
Помогите, пожалуйста

Последний раз редактировалось Stilet; 22.01.2011 в 17:16.
GerNick вне форума Ответить с цитированием
Старый 21.01.2011, 13:07   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

Если массив который хотите вычислить это sObject, то я так понимаю вам известна длина массива? Если да то тогда так Размер = sizeof(struct sObject) * Длина массива. Не много не понятно что именно требуется.
BOBAH13 вне форума Ответить с цитированием
Старый 21.01.2011, 13:17   #3
GerNick
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 14
По умолчанию

Цитата:
Сообщение от BOBAH13 Посмотреть сообщение
Если массив который хотите вычислить это sObject, то я так понимаю вам известна длина массива? Если да то тогда так Размер = sizeof(struct sObject) * Длина массива. Не много не понятно что именно требуется.
Я отредектировал свой вопрос, думаю сейчас понятней.
Длина мне нужна массива указателей Data_mapping
GerNick вне форума Ответить с цитированием
Старый 21.01.2011, 18:42   #4
like-nix
Форумчанин
 
Регистрация: 09.11.2009
Сообщений: 104
По умолчанию

>int * Data_mapping[]
>sObject * OBJECT = ( sObject * ) Data_mapping[Address];

Дальше объяснять нужно?

(int *) &Obj_input_Dx, - это вообще жесть удивительно если компилируется =)
like-nix вне форума Ответить с цитированием
Старый 22.01.2011, 17:08   #5
GerNick
Пользователь
 
Регистрация: 20.12.2010
Сообщений: 14
Радость

Был бы признателен, если бы дальше написали.

>>
Цитата:
(int *) &Obj_input_Dx, - это вообще жесть удивительно если компилируется =)
КОМПИЛИТСЯ, при том как надо

Последний раз редактировалось Stilet; 22.01.2011 в 17:17.
GerNick вне форума Ответить с цитированием
Старый 22.01.2011, 17:56   #6
like-nix
Форумчанин
 
Регистрация: 09.11.2009
Сообщений: 104
По умолчанию

(int *) &Obj_input_Dx это приведение типов в стиле Си. А приведение указтелей разных типов очень не безопасно. В данном случа у вас типы указателей сильно различаются размером, но даже при совпадении размера не совместимые типы лучше так не приводить.

Последний раз редактировалось like-nix; 22.01.2011 в 18:03.
like-nix вне форума Ответить с цитированием
Старый 22.01.2011, 17:59   #7
like-nix
Форумчанин
 
Регистрация: 09.11.2009
Сообщений: 104
По умолчанию

Удалите это сообщение =)
like-nix вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
sizeof , rand , адрес переменных. Gradus C++ Builder 30 24.08.2010 23:12
SizeOf выдает значение на порядок меньше. Alex Cones Общие вопросы Delphi 4 15.01.2010 21:24