本文共 475 字,大约阅读时间需要 1 分钟。
下面这段代码的输出结果为:
#includevoid change(int*a, int&b, int c){ c=*a; b=30; *a=20;}int main ( ){ int a=10, b=20, c=30; change(&a,b,c); printf(“%d,%d,%d,”,a,b,c); return 0; }
20,30,30a为指针传递,b为引用传递,c为值传递。
*a = 20; b = 30; a和b的值确实发生了修改。而c只是将值复制到形参,在函数内的操作并不会影响c的实际值,因此c还是为原来的30。
该题考察函数传参问题。
1,指针传参 -> 将变量的地址直接传入函数,函数中可以对其值进行修改。
2,引用传参 -> 将变量的引用传入函数,效果和指针相同。
3,值传参 -> 在传参过程中,首先将c的值复制给函数c变量,然后在函数中修改的即是函数的c变量,然后函数返回时,系统自动释放变量c。而对main函数的c没有影响
转载地址:http://vqypi.baihongyu.com/