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

时间:2011-08-23 17:30:45

标签: 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 ? 
}

1 个答案:

答案 0 :(得分:10)

  

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

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

  

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

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