如何在另一个函数中使用一个函数的变量?

时间:2014-05-30 08:43:25

标签: c function

这可能吗?

我们说我有这个功能:

void init_datastructure()
{
    struct record *head;
}

然后我有主要功能

int main()
{
  init_datastructure();
}

现在如果我想在main函数中使用head,我该怎么做?例如,如何设置head = NULL?

2 个答案:

答案 0 :(得分:1)

在任何函数之外定义变量:

static struct record *m_head;

void init_datastructure()
{
    m_head = ...
}

int main()
{
    struct record *p;

    init_datastructure();

    for (p = m_head; p != NULL; p = p->next)
        // ...

}

这将使变量存在于程序的数据部分中。

请注意,我已标记变量static。这意味着它只能在此.c文件中看到,而不能在其他任何文件中看到。另外,作为惯例,我的名字前缀为m_(表示它是"模块"变量)。这有助于将其与局部变量区分开来。

答案 1 :(得分:0)

有两种方法。

  1. 使用全局变量。全局变量可以在程序中的任何位置使用。但大部分时间这都不好。

  2. *head函数中声明main,然后将其传递给init_datastructure函数。例如

    void init_datastructure(record *head)
    {
         head = NULL;
    }
    
    int main()
    {
        struct record *head;
        init_datastructure(&head);
    }