C语言函数参数传递:值传递示例分析
执行以下程序段的输出结果是( )。为什么还是 1,2
void fun(int x, int y)
{
x = 10;
y = 20;
}
int main( )
{
int a = 1, b = 2;
fun(a, b);
printf("%d, %d\n", a, b);
return 0;
}
答案:A)1,2
**原因:**在函数中,虽然对x和y进行了赋值,但是这个赋值只是改变了形参的值,对实参a和b没有影响,所以在输出时依然是原来的值1和2。
解释:
在C语言中,函数参数传递采用的是“值传递”机制。这意味着函数在调用时会将实参的值复制一份给形参,形参和实参在内存中是独立存在的。因此,在函数内部对形参进行修改,不会影响到实参的值。
在本例中,fun(a, b)调用函数时,实参a和b的值被复制给了形参x和y。在函数fun内部,x和y被赋值为10和20,但这些修改只影响了形参x和y,不会影响到实参a和b。因此,在main函数中输出a和b的值仍然是1和2。
总结:
- 函数参数传递采用“值传递”机制,形参和实参在内存中是独立存在的。
- 函数内部对形参的修改不会影响到实参。
原文地址: https://www.cveoy.top/t/topic/oYAh 著作权归作者所有。请勿转载和采集!