C / C ++: указатель на указатель на структуру

0

У меня 2 структуры:

struct A {
  int m1;
  int m2;
}

и вторая структура, которая имеет в качестве члена предыдущую структуру:

struct Temp_A {    
  A a;    
}

Тогда у меня есть в моей программе:

Temp_A** temp_a;

Поэтому мои вопросы:

  1. Как я могу выделить память для temp_a?

  2. Как я могу получить доступ к? a Это должно быть что-то вроде (* temp_a) → a...

Спасибо!

  • 0
    Очень похоже на ваш другой вопрос: stackoverflow.com/questions/21932242/…
  • 3
    Ответы на оба вопроса зависят от того, как вы должны использовать temp_a . Какой у вас вариант использования? Какова цель дизайна? И самое главное, какую проблему вы пытаетесь решить?
Показать ещё 2 комментария
Теги:
pointers
struct

2 ответа

2

Как я могу выделить память для temp_a?

//1 here is number of pointer elements you want as temp_a is pointer to pointer 
// or for simplicity array of pointers.
temp_a = malloc(sizeof(*temp_a)* 1); 

//then you should allocate temp_a[0] too
temp_a[0] = malloc(sizeof(**temp_a));

Как я могу получить доступ к

(*temp_a)->a
//and tehn
(*temp_a)->a.m1

//you can access as too
temp_a[0]->a 
0

Прежде всего, вы должны объявить Temp_A следующим образом:

struct Temp_A {    
  struct A a;    
}

Теперь Temp_A** указывает на указатель на Temp_A, поэтому вы можете назначить как

temp_a = malloc(sizeof(Temp_A*));
(*temp_a) = malloc(sizeof(Temp_A));

Вы можете получить доступ, как

(*temp_a)->a

Ещё вопросы

Сообщество Overcoder
Наверх
Меню