在C中使用传递的引用struct变量

Vin*_*Vin 0 c pointers

我有一个基本的指针问题.我有一些这样的代码:如果以下代码中有任何错误,请告诉我:

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 ? 
}
Run Code Online (Sandbox Code Playgroud)

Arn*_*anc 10

struct abc var1 = *p1; ======>我可以这样做吗?

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

func2(&var1.b); func2(&p1->b); =========>这两个中的哪一个是对的?

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