我需要弄清楚如何使用void类型函数来更改另一个函数中的值,所以我试图编写一个练习程序,使用一个过程将一个整数从5更改为4然后打印新整数(应为4)。
#include <stdio.h>
#include <stdlib.h>
void change(int x)
{
x = 4;
}
int main(int argc, char **argv)
{
int z = 5;
change(z);
printf("%d\n",z);
return 0;
}
最后打印5张。我可以在这里说明范围存在某种问题,但我无法弄清楚如何解决它。我也无法在程序中打印,因此解决方案是不可能的。我真的很感激任何帮助!
答案 0 :(得分:5)
要更改另一个函数中的变量,不在函数范围内,必须通过指针传递变量。
void change(int *x)
{
*x = 4;
}
使用change(&z)
调用该函数。
如果变量没有被指针传递,那么只有函数范围内的变量才会改变,而不是它的参数。
答案 1 :(得分:3)
在C中,函数参数始终按值按值传递。这意味着对函数中的值所做的任何更改都会在调用者中反映出 。这就是你的情况。
幸运的是,你可以传递一个指针(当然是值)。这允许您通过解除引用来更改指针指向的值。
要执行此操作,请将函数的原型调整为
void change(int* x)
然后,在该功能中,使用
*x = 4;
最后,使用
调用该函数 change(&z);
答案 2 :(得分:2)
您需要传递变量的地址,然后才能更改变量的值。
void change(int *x)
{
*x = 4;
}
现在调用函数将具有x的新值,即4。
答案 3 :(得分:-2)
您可以将指针传递给函数,如下所示:
void change(int * x)