我有如下结构所定义的结构(名称是不同的)的C指针问题:&(* struct->结构)
struct str1
{
int field1;
struct str2;
}
我有功能的*str1
。我想要一个指向str2
的指针。
所以我试了&(str1->str2)
,并希望这会返回指向str2
的指针。这是不正确的?它似乎没有工作。如果给出指向str1
的指针,我将如何获得指向str2
的指针?
我有如下结构所定义的结构(名称是不同的)的C指针问题:&(* struct->结构)
struct str1
{
int field1;
struct str2;
}
我有功能的*str1
。我想要一个指向str2
的指针。
所以我试了&(str1->str2)
,并希望这会返回指向str2
的指针。这是不正确的?它似乎没有工作。如果给出指向str1
的指针,我将如何获得指向str2
的指针?
如果你有一个指针STR1,你可能需要做:
&(*(STR1).str2)
真的不知道这一点,但尝试它,我没有C编译器在手。
&(*(str1).str2)相当于&(str1-> str2):) – LukeN 2010-04-22 17:52:52
如果p
是ponter到struct str1
类型的对象,然后&p->str2
会给你的指针其str2
构件(假定它有str2
部件)。
“似乎没有工作”不是对问题的完整描述。你的例子看起来很可疑。 struct str1
内的struct str2
是没有意义的。它应该是什么?一个结构类型的前向声明?你的指针真的叫做str1
?与结构标签相同?
您的解决方案应该是正确的。 str1-> str2指向你的结构,并把它的地址告诉你一个指向该值的指针。
你的调试器告诉你什么?也许你的str1指针是垃圾?
您可以创建一个指向像下面另一个结构,
#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);
}
-1:根本不访问代码段中的'emp'成员。 – jpalecek 2012-04-23 13:16:55
工作正常,我;你得到一个编译器错误?我们可以看到它吗? – tzaman 2010-04-22 17:54:34
&(str1-> str2)是正确的。你为什么说它不起作用? – Jay 2010-04-22 18:00:44
你的“struct str1”声明不好。它没有在“struct str2”声明中指定一个变量(例如“struct str2 str2;”)。 – 2010-04-22 18:02:36