2011-08-23 57 views
0

我有一个基本的指针问题。 我有一些这样的代码: 请让我知道什么是错在下面的代码:在C中使用通过引用结构变量传递参数

struct abc { 
    int a; 
    int b; 
}; 

void func2(int*); // defined elsewhere 

void func1 (struct abc *p1) 
{ 
    struct abc var1 = *p1; // ======> Can I do this ? 

    func2(&var1.b); 
    func2(&p1->b);  // =========> Which of these 2 is right ? 
} 
+0

'func2()'的签名是什么? –

+0

func2(int *)是签名。 – Vin

回答

10

struct abc var1 = *p1; ==>我能做到这一点?

是的,这会将p1指向的结构复制到局部变量var1中。

func2(&var1.b); func2(&p1->b); =========>以下哪2的是正确的?

两者,如果func2()接受int*作为参数。这取决于您是否想要func2修改p1->bvar1.b