如何在C中的两个函数之间共享变量?

Zhi*_*ang 3 c function

在C中,假设var1是foo1()中的变量,foo2()想要访问var1,但是foo1()并没有调用foo2(),所以我们不能通过参数传递它。同时,只有 foo1() 和 foo2() 会访问它,所以我不想将其声明为全局变量。这与c++中的“友元语义”类似,有没有办法在C中实现这一点?

void foo1() {
  ... 
  var1;
  ....
}


void foo2() {
 ...
 how to access var1?
 ...
}
Run Code Online (Sandbox Code Playgroud)

Kei*_*las 6

您将变量传递给两个函数......一般来说,函数不应该保存状态。

很快你就会发现传递变量不太好并且变得脆弱,所以相反,你传递结构......然后函数开始处理结构的状态。

typedef struct 
{
    int var1;
} blah_t;

void foo1(blah_t* b)
{
    b->var1=0;
}

void foo2(blah_t* b)
{
    b->var1++;
}
Run Code Online (Sandbox Code Playgroud)

这是 OO C 背后非常简单的种子想法。