我不明白这部分内容。如果我不允许使用全局变量,我该怎么做?例如:通过引用调用一个被另一个函数通过引用调用的变量,而不使用全局变量
main()
{ int z;
function1(&z);
}
function1(int *x)
{
function2(&x);
}
function2(int *number)
{
++(*number);
}
我不明白这部分内容。如果我不允许使用全局变量,我该怎么做?例如:通过引用调用一个被另一个函数通过引用调用的变量,而不使用全局变量
main()
{ int z;
function1(&z);
}
function1(int *x)
{
function2(&x);
}
function2(int *number)
{
++(*number);
}
当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;
}
它给出了错误:将一个参数从整数传递到指针而没有转换 – latenightcode 2012-07-20 06:22:30
它编译得很好,参见[this](http://ideone.com/RqCZk)。 – jxh 2012-07-20 06:24:45
哦,我明白了!谢啦! – latenightcode 2012-07-20 06:27:38
我在这里没有看到全局变量。我没有得到这个问题 – 2012-07-20 06:10:06
不,我的意思是,该代码不起作用。 Wth是错的吗? – latenightcode 2012-07-20 06:11:01
它应该是一个替代方案,声明int z为全局变量 – latenightcode 2012-07-20 06:11:29