Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用void类型过程更改C中的变量_C_Procedure_Void - Fatal编程技术网

使用void类型过程更改C中的变量

使用void类型过程更改C中的变量,c,procedure,void,C,Procedure,Void,我需要弄清楚如何使用void类型函数来更改另一个函数中的值,因此我正在尝试编写一个实践程序,使用一个过程将整数从5更改为4,然后打印新的整数(应该是4) #包括 #包括 无效更改(int x) { x=4; } int main(int argc,字符**argv) { int z=5; 变化(z); printf(“%d\n”,z); 返回0; } 这张照片最后印了5张。我可以看出这里的范围存在某种问题,但我不知道如何解决它。我也不能在程序中打印,因此解决方案是不可能的。我真的很感激任何帮助

我需要弄清楚如何使用void类型函数来更改另一个函数中的值,因此我正在尝试编写一个实践程序,使用一个过程将整数从5更改为4,然后打印新的整数(应该是4)

#包括
#包括
无效更改(int x)
{
x=4;
}
int main(int argc,字符**argv)
{
int z=5;
变化(z);
printf(“%d\n”,z);
返回0;
}

这张照片最后印了5张。我可以看出这里的范围存在某种问题,但我不知道如何解决它。我也不能在程序中打印,因此解决方案是不可能的。我真的很感激任何帮助

您可以传递指向函数的指针,如下所示:


void change(int*x)

要更改另一个函数中不在函数范围内的变量,必须通过指针传递该变量

void change(int *x)
    {
    *x = 4;
    }
并使用
change(&z)
调用该函数


如果变量不是通过指针传递的,那么只有函数范围内的变量会改变,而不是它的参数。

在C中,函数参数总是通过值传递。这意味着对函数中的值所做的任何更改都不会反映在调用方中。这就是你的情况

幸运的是,您可以传递一个指针(当然是按值传递)。这允许您通过取消引用来更改指针指向的值

为此,将函数的原型调整为

void change(int*x)

然后,在该函数中,使用

*x=4

最后,使用


change(&z)

您需要传递变量的地址,然后才能更改变量的值

void change(int *x)
{
    *x = 4;
}

现在调用函数的新值x为4。

voidchange(int*x){*x=4;}
change(&z)@TETRACOMPUTERCHTURE你似乎被误解了……而且……其余的可能需要解释清楚。是吗?我对提供有人可以无意识地复制而不考虑其实际用途的代码有复杂的感觉。你的答案,你的选择。你所说的是准确的;你没有说的对你的答案有帮助很重要——依我看。我的观点是,最终,提供一些有利于学习的东西会更有帮助。从你刚刚获得的正面投票和你拥有超过140万的声誉(以及有人刚刚对我的回答投的反对票),我打赌这可能不是stackoverflow文化。我会满怀信心地进行另一面的赌注,我会从中获利。
void change(int *x)
{
    *x = 4;
}