Вопрос по указателю C: & (* struct-> struct) - PullRequest
1 голос
/ 22 апреля 2010

У меня есть структура, определенная со структурой следующим образом (имена разные)

struct str1
{
   int field1;
   struct str2;
}

И у меня есть *str1 в функции. Я хотел бы получить указатель на str2.

Поэтому я попытался &(str1->str2) и надеялся, что это вернет указатель на str2 Это неверно? Кажется, это не работает. Как бы получить указатель на str2, если дать указатель на str1?

Ответы [ 4 ]

4 голосов
/ 22 апреля 2010

Если p является указателем на объект типа struct str1, то &p->str2 даст указатель на его член str2 (при условии, что он имеет str2 член).

«Кажется, не работает» не является значимым описанием проблемы. Ваши примеры выглядят подозрительно, хотя. struct str2 внутри struct str1 не имеет смысла. Что это должно быть? Предварительное объявление типа структуры? И действительно ли ваш указатель назван str1? Так же, как тег структуры?

1 голос
/ 22 апреля 2010

Ваше решение должно быть правильным.str1-> str2 указывает на структуру и, взяв ее адрес, даст указатель на это значение.

Что говорит вам ваш отладчик?Возможно, ваш указатель str1 является мусором?

0 голосов
/ 23 апреля 2012

Вы можете создать указатель на другую структуру, как показано ниже,

#include<stdio.h>

struct emp_1 {
  int id;
  char *name;
};

struct company {
  int id;
  char *name;
  struct emp_1 emp;
};

void main(void)
{
  struct company company;
  struct emp_1 *emp = (struct emp_1 *)&company;

  company.id = 100;
  company.name = "Payoda";
  emp -> id = 100;
  emp -> name = "Mohanraj";

  printf("emp id is : %d \n", emp -> id);
  printf("emp name is : %s \n", emp -> name);
}
0 голосов
/ 22 апреля 2010

Если у вас есть указатель на str1, вам может потребоваться:

& (* (str1) .str2)

не совсем уверен в этом, но попробуйте, у меня под рукой нет компилятора C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...