如何从不同的函数中访问C中的变量?

时间:2015-05-30 14:08:12

标签: c function pointers scope

我的问题是函数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。没有任何论据,有没有可能的方法?

1 个答案:

答案 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())。