извлечение структуры из вложенной структуры в c

У меня следующая проблема:

У меня есть одна глобальная структура, внутри которой много структур. Теперь я хочу, чтобы одна из подструктур была извлечена и сохранена в какой-то другой структуре.

typedef struct 
{
  int a;
}A;

typedef struct
{
 int b;
}B;

typedef struct 
{ 
 A dummy1;
 B dummy2;
} C;

Я хочу объявить четвертую структуру, которая извлекает A из C. Я сделал свой memcpy, это единственный способ?

Помощь будет очень признательна

Спасибо, Хузайфа.


person user437777    schedule 02.09.2010    source источник


Ответы (3)


Вы можете назначать структуры. Так:

typedef struct
{
    A blah1;
    B blah2;
    /* Other members here */
} D;

C c;
D d;
...
d.blah1 = c.dummy1;

в полном порядке.

person Oliver Charlesworth    schedule 02.09.2010

Используйте указатель на нужную структуру:

int main() {
C c;
c.dummy1.a = 10;
c.dummy2.b = 20;

A *a;

a = &c.dummy1;

printf("%d\n", a->a);

return 0;

}

person i4k    schedule 02.09.2010

Должна просто быть возможность получить ссылку на dummy1.

typedef struct { A dummy1; } D;

C var1;
D var2.dummy;
(*var2.dummy) = &var1.dummy1;
person Suroot    schedule 02.09.2010
comment
Выдает ошибку компиляции. 'dummy': не является членом 'D' for ( (*var2.dummy) = &var1.dummy1;) синтаксическая ошибка: отсутствует ';' до '.' for ( D var2.dummy;) - person user437777; 02.09.2010
comment
в C нет ссылок. & - оператор адреса - person qrdl; 02.09.2010