我的问题是函数malloc_queue()如何在没有给出任何参数的情况下从init_queue()访问变量!
例如:
main.c:
if (init_queue()) {
malloc_queue()
}
init_queue()创建变量que:
int init_queue{
struct Queue *que;
return 1;
}
malloc_queue()想要使用init_queue()中的变量que做一些事情:
void malloc_queue{
struct Queue *que = (struct Queue*)malloc(sizeof(struct Queue));
return;
}
但这不起作用,因为malloc_queue不知道什么是que。没有任何论据,有没有可能的方法?
答案 0 :(得分:0)
也许你想要一个static variable
外部函数,它们在定义之后在驻留文件中有作用域。
检查此代码:
#include <stdio.h>
static int x = 0;
void a() {
x = 5;
}
void b() {
x*=2;
}
int main(int argc, char * argv[]) {
printf("%d\n", x);
a();
printf("%d\n", x);
b();
printf("%d\n", x);
return 0;
}
正如评论建议一样,请阅读c范围。
如果需要声明除主要类型之外的结构,则可能需要将结构指针声明为static variable
外部函数,然后在其中一个函数内分配内存(例如malloc()
)。