2012-07-20 18 views
1

我不明白这部分内容。如果我不允许使用全局变量,我该怎么做?例如:通过引用调用一个被另一个函数通过引用调用的变量,而不使用全局变量

main() 
{ int z; 
    function1(&z); 
} 

function1(int *x) 
{ 
    function2(&x); 
} 

function2(int *number) 
{ 
    ++(*number); 
} 
+0

我在这里没有看到全局变量。我没有得到这个问题 – 2012-07-20 06:10:06

+0

不,我的意思是,该代码不起作用。 Wth是错的吗? – latenightcode 2012-07-20 06:11:01

+0

它应该是一个替代方案,声明int z为全局变量 – latenightcode 2012-07-20 06:11:29

回答

3

function1调用function2,只是通过在x,不&x

function1(int *x) 
{ 
    function2(x); /* not &x */ 
} 

&x将通过function2指针的指针int,但它被声明为只需要一个指向int

其他问题:z应该初始化,并且函数应该有前向声明,声明在main以上。应声明main返回int,并成功返回0。正如在其他答案中指出的那样,其他函数也需要返回类型。

void function2(int *number) 
{ 
    ++(*number); 
} 

void function1(int *x) 
{ 
    function2(x); 
} 

int main() 
{ 
    int z = 0; 
    function1(&z); 
    return 0; 
} 
+0

它给出了错误:将一个参数从整数传递到指针而没有转换 – latenightcode 2012-07-20 06:22:30

+0

它编译得很好,参见[this](http://ideone.com/RqCZk)。 – jxh 2012-07-20 06:24:45

+0

哦,我明白了!谢啦! – latenightcode 2012-07-20 06:27:38

相关问题