我有一个结构定义,结构如下(名称不同)
struct str1
{
int field1;
struct str2;
}
我在一个函数中有一个*str1
。我想得到一个指向str2
的指针。
所以我尝试了&(str1->str2)
并希望这会返回指向str2
的指针。这是不正确的?它似乎没有工作。如果给出指向str2
的指针,我将如何获得指向str1
的指针?
答案 0 :(得分:4)
如果p
是struct 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);
}