2010-04-22 86 views
1

我有如下结构所定义的结构(名称是不同的)的C指针问题:&(* struct->结构)

struct str1 
{ 
    int field1; 
    struct str2; 
} 

我有功能的*str1。我想要一个指向str2的指针。

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

+1

工作正常,我;你得到一个编译器错误?我们可以看到它吗? – tzaman 2010-04-22 17:54:34

+0

&(str1-> str2)是正确的。你为什么说它不起作用? – Jay 2010-04-22 18:00:44

+6

你的“struct str1”声明不好。它没有在“struct str2”声明中指定一个变量(例如“struct str2 str2;”)。 – 2010-04-22 18:02:36

回答

0

如果你有一个指针STR1,你可能需要做:

&(*(STR1).str2)

真的不知道这一点,但尝试它,我没有C编译器在手。

+2

&(*(str1).str2)相当于&(str1-> str2):) – LukeN 2010-04-22 17:52:52

4

如果p是ponter到struct str1类型的对象,然后&p->str2会给你的指针其str2构件(假定它有str2部件)。

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

1

您的解决方案应该是正确的。 str1-> str2指向你的结构,并把它的地址告诉你一个指向该值的指针。

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

-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); 
} 
+0

-1:根本不访问代码段中的'emp'成员。 – jpalecek 2012-04-23 13:16:55