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