3月15日 传址
传值,只将这个变量的值拿走,不返还,除非return赋值。将a中的值传入函数,无论这个值在函数中如何变化,不会影响main中的值。
传址,将这个变量的值拿走运算,完成后还是要返还回来(不用return用out),将a的值传入函数,函数中这个值如何变化,main中的a也会跟着变化。
相当于:函数中的这个值,是main中a的快捷方式。
例:求解一元二次方程ax^2+bx+c=0的根的情况及结果:
public void Fangcheng(double a,double b,double c,out double x1,out double x2) { double de = b * b - 4 * a * c; if (de > 0) { Console.WriteLine("此方程有两个不相同的实数根"); x1 = -b + Math.Sqrt(de) / (2 * a); x2 = -b - Math.Sqrt(de) / (2 * a); } else { Console.WriteLine("有两个相同的实数根" ); x1 = -b + Math.Sqrt(de) / 2 * a; x2 = x1; } } static void Main(string[] args) { //一元二次方程,传出x1,x2 double x1; double x2; Console.WriteLine("求解二元一次方程ax^2+b*x+c=0根的情况及结果"); Console.Write("请输入a="); double a = double.Parse(Console.ReadLine()); Console.Write("请输入b="); double b =double.Parse(Console.ReadLine()); Console.Write("请输入c="); double c = double.Parse(Console.ReadLine()); double de = b * b - 4 * a * c; if (a == 0) { Console.WriteLine("这个方程不是一元二次方程"); } else { if (de < 0) { Console.WriteLine("没有实数根"); } else { Program pp = new Program(); pp.Fangcheng(a,b,c,out x1,out x2); if(x1==x2) { Console.WriteLine("x1=x2="+x1); } else { Console.WriteLine("x1="+x1); Console.WriteLine("x2"+x2); } } } Console.ReadLine(); }