这可能吗?
我们说我有这个功能:
void init_datastructure()
{
struct record *head;
}
然后我有主要功能
int main()
{
init_datastructure();
}
现在如果我想在main函数中使用head,我该怎么做?例如,如何设置head = NULL?
答案 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)
有两种方法。
使用全局变量。全局变量可以在程序中的任何位置使用。但大部分时间这都不好。
在*head
函数中声明main
,然后将其传递给init_datastructure
函数。例如
void init_datastructure(record *head)
{
head = NULL;
}
int main()
{
struct record *head;
init_datastructure(&head);
}