繁体   English   中英

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

[英]C Pointer Question: &(*struct->struct)

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

struct str1
{
   int field1;
   struct str2;
}

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

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

如果pstruct str1类型的对象的ponter,则&p->str2将给出指向其str2成员的指针(假设它具有str2成员)。

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

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

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

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

&(*(STR1).str2)

不太确定这一点,但试试看,我手头没有C编译器。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM