更改指针的值而不在函数中调用它?

时间:2013-12-02 17:04:13

标签: c pointers reference

我在 test.h 文件中声明

extern void test(int *ptr);
extern void myFunc();
extern int num;

然后我将h文件包含在我的 test1.c 文件中。

我在 test2.c 中编写了我的函数:

void myFunc( )
{
    test(&num);
}
void test(int *num )
{
    *num = 9;
}
test1.c 中的

我写道:

int num = 5;
myFunc();

我的问题是,我如何使用num中的test()变量/指针而不将其传递给myFunc()

文件结构必须保持不变,这就是为什么我要尝试刷新我的C,

比你

2 个答案:

答案 0 :(得分:2)

检查范围。

void myFunc( )
{
    test(&num);
}

除非num是全局的,否则此函数无法看到变量num,因此它是GIGO(垃圾输入,垃圾输出)。

我知道你看起来像num IS global,但这就是诀窍:

int num = 5;
myFunc();

我看不到完整的代码,但由于你的格式化,我猜这是使用num的本地副本而不是extern,因为你在声明一个 new 变量您调用myFunc()的函数内的局部范围。外部没有被使用。

答案 1 :(得分:1)

如果int num是全局的,那么任何函数都可以使用它。第二种情况,如果你将int num声明为local,那么我认为这是一个错误,或者你不能访问其中num已经作为本地存在的函数中的全局num或写下你的完整代码。