C指针问题:&(* struct-> struct)

时间:2010-04-22 17:48:17

标签: c pointers

我有一个结构定义,结构如下(名称不同)

struct str1
{
   int field1;
   struct str2;
}

我在一个函数中有一个*str1。我想得到一个指向str2的指针。

所以我尝试了&(str1->str2)并希望这会返回指向str2的指针。这是不正确的?它似乎没有工作。如果给出指向str2的指针,我将如何获得指向str1的指针?

4 个答案:

答案 0 :(得分:4)

如果pstruct str1类型对象的一个​​ponter,则&p->str2会将指针指向其str2成员(假设它有str2 }成员)。

“似乎没有工作”并不是对问题的有意义的描述。你的例子看起来很可疑。 struct str2内的struct str1毫无意义。应该是什么?结构类型的前向声明?你的指针真的命名为str1吗?与struct标签相同吗?

答案 1 :(得分:1)

您的解决方案应该是正确的。 str1-> str2指向结构并获取其地址可以获得指向该值的指针。

你的调试器告诉你什么?也许你的str1指针是垃圾?

答案 2 :(得分:0)

如果你有一个指向str1的指针,你可能需要这样做:

及(*(STR1).str2)

对此并不十分肯定,但试试看,我手头没有C编译器。

答案 3 :(得分:-1)

您可以创建指向另一个结构的指针,如下所示

#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);
}