out--传址

传值,只将这个变量的值给拿走,不返还,除非return赋值。
将a的值传入函数,无论这个值在函数中如何变化,不会影响main中的a

传址,将这个变量的值拿走运算,完成后还是得返还回来(不用return,用out)
将a的值传入函数,函数中这个值如何变化,main中的a也会跟着变化
相当于:函数中的这个值,是main种这个a的快捷方式

例:

求解一元二次方程的根,利用out传值返回x1和x2两个值:

 1  public void Fangcheng(double a, double b, double c, out double x1, out double x2)
 2         {
 3             double de = b * b - 4 * a * c;
 4             if (de > 0)
 5             {
 6                 Console.WriteLine("此方程有两个不相同的实数根!");
 7                 x1 = (-b + Math.Sqrt(de)) / (a * 2);
 8                 x2 = (-b - Math.Sqrt(de)) / (a * 2);
 9             }
10             else//de==0
11             {
12                 Console.WriteLine("此方程有两个相同的实数根!");
13                 x1 = (-b + Math.Sqrt(de)) / (a * 2);
14                 x2 = x1;
15             }
16  static void Main(string[] args)
17         {
18             double x1;
19             double x2;
20             Console.WriteLine("求解一元二次方程ax^2+bx+c=0的根的情况及结果:");
21             Console.Write("请输入a=");
22             double a = double.Parse(Console.ReadLine());
23             if (a == 0)
24             {
25                 Console.WriteLine("此方程不是一元二次方程!");
26             }
27             else
28             {
29                 Console.Write("请输入b=");
30                 double b = double.Parse(Console.ReadLine());
31                 Console.Write("请输入c=");
32                 double c = double.Parse(Console.ReadLine());
33
34                 double de = b * b - 4 * a * c;
35                 if (de < 0)
36                 {
37                     Console.WriteLine("此方程没有实数根!");
38                 }
39                 else//de>=0
40                 {
41                     Program pp = new Program();
42                     pp.Fangcheng(a, b, c, out x1, out x2);
43
44                     if (x1 == x2)
45                     {
46                         Console.WriteLine("x1=x2=" + x1);
47                     }
48                     else
49                     {
50                         Console.WriteLine("x1=" + x1);
51                         Console.WriteLine("x2=" + x2);
52                     }
53                 }
54             }
55
56             Console.ReadLine();
            }

猜拳游戏:与电脑进行猜拳游戏,输入剪刀,石头,布。

1  public void  caiquan()
 2         {
 3                Console.Write("请出拳:");
 4                 string x = Console.ReadLine();
 5                 int x1;
 6                 if (x == "剪刀" || x == "石头" || x == "布")
 7                 {
 8                     switch (x)
 9                     {
10                         case "剪刀":
11                             x1 = 0;
12                             break;
13                         case "布":
14                             x1 = 1;
15                             break;
16                         default:
17                             x1 = 2;
18                             break;
19                     }
20                     Random ran = new Random();
21                     int a = ran.Next(3);
22                     string m;
23                     switch (a)
24                     {
25                         case 0:
26                             m = "剪刀";
27                             break;
28                         case 1:
29                             m = "布";
30                             break;
31                         default:
32                             m = "石头";
33                             break;
34                     }
35                     Console.WriteLine(m);
36
37                     if ((x1 - a == -1) || (x1 - a == 2))
38                     {
39                         Console.WriteLine("你赢了!");
40                     }
41                     else if ((x1 - a == 1) || (x1 - a == -2))
42                     {
43                       Console.WriteLine( "你输了");
44                     }
45                     else
46                     {
47                        Console.WriteLine( "平局!");
48                     }
49
50                 }
51                 else
52                 {
53                    Console.WriteLine( "你的输入有误!");
54                 }
55         }
56 static void Main(string[] args)
57         {
58             Program p = new Program();
59             p.caiquan();
60             Console.ReadLine();
61         }
时间: 2024-10-06 16:22:16

out--传址的相关文章

JS 传值 传址

在JS中,有两种不同的方式可以操作数据的值,这两种技术分别叫做 传值 和 传址. 传值:在赋值过程中,首先对值进行了一份拷贝,而后将这份拷贝存储到一个变量.对象属性或数组元素中.拷贝的值和原始的值是完全独立.互不影响的.当一份数据通过值传递给一个函数,实际上被传递的不是数据本身,而是数据的一份拷贝.因此,如果函数修改了这个值,影响到的只是数据的那份拷贝,而并不影响数据本身. 传址:在赋值过程中,变量实际上存储的是数据的地址(对数据的引用),而不是原始数据或者是数据的拷贝.如果值通过一个地址发生了

Java传值和传址

调用函数时,传的参数过去可能是传值,也可能是传址.如果是传值,函数内部的操作对参数的值没有影响:如果是传址,函数内部的操作是对参数指向的内存进行操作,会影响参数的值. Java到底是传值还是传址?用下面这个例子可以实验一下: package test; import java.util.ArrayList; import java.util.List; public class ValueAndAddress { public static void f1(int x){ x = x + 5;

java 传址或传值

原文链接: http://blog.csdn.net/jdluojing/article/details/6962893 java是传值还是传址,这个问题已经讨论了很久了,有些人说是传值的,有些人说要看情况,有些情况是传值,有些情况是传址.到底是传值还是传址呢?我们暂时先把传址理解为C++的传指针一样..... 先看下面一段程序: [java] view plaincopyprint? package luojing; public class StringDemo { public stati

javascript的变量,传值和传址,参数之间关系

先把收获晾一下: 1.javascrip变量包含两种类型的值,一种为引用类型的值,一种是基本类型的值.引用类型包括:Array,Object,Function(可以这么理解,非基本类型的都是引用类型);5种基本类型包括:undefined,null,string,boolean,number 2.函数的参数的传递的机制是复制变量值. 书上说:”把函数外部的值复制给函数内部的参数,就和把值从一个变量复制给另一个变量一样.基本类型的传递如同基本类型变量的复制一样,而引用类型的则如同引用类型变量的复制

他山之石,calling by share——python中既不是传址也不是传值

事情是这样的,Python里是传址还是传值令人疑惑,限于本人没有C基础,所以对大家的各类水平层次不一的解答难以确信. 第一个阶段: 在读<python基础教程第二版>的时候感到疑惑,然后群友解答(略敷衍),接着就是知乎上提问(感谢大家的热心回答,但我很晚才收到推送) 虽然是某天早晨睡不着,翻看公众号的时候看见一篇<不要再问 "Python 函数中,参数是传值,还是传引用?" 这种没有意义的问题了>的文章,初步释疑惑(但后来我觉得他的说法虽然形象,但是不准确) 第

[javaSE] 变量的传值与传址

变量:就是将不确定的数据进行存储.也就是需要在内存中开辟一个空间 这个空间需要一个名称,这个名称就是变量名 基本数据类型:byte,short,int,long,double,float,char,boolean 引用数据类型:类(Class),接口(interface),集合 传值就是把这个变量复制一份 传址就是还是同一个对象 基本数据类型一般都是传值,引用数据类型一般是传地址 import java.util.ArrayList; import java.util.List; public

(转)java 中的 传值 与 传址

在一些面试企业的过程当中 ,很多人看重于基础的考核.其中,传值与传地址 就是一种基础能力考核的关键,这里我总结了 5种很典型的例子 ,最后做了一个总结 首先是8种基本数据类型 下面用 int 类型 做例子 属于传值 public static void method1(int i) { i= i+10; System.out.println("在方法内的值"+i); } public static void main(String[] args) { int i =5; method1

php传值与传址的区别

PHP中传值和传址的区别, 十分的简单, 看字面的意思大概就知道是什么意思了, 下面通过简单的实例看一下两者的区别. 1 $a = 5; 2 function show(&$b) { 3 $b += 10; 4 echo "函数内部:" . $b . "<hr>";//结果: 15 5 } 6 show($a); 7 echo "函数外部:" . $a . "<hr>";//结果: 15 总结:

C语言的传值与传址调用

传值调用并不能改变两个变量的值,而传址能. 为什么,因为,传值调用,仅仅是在函数内,调换参数的值. 而地址所指向的值,改变的不仅仅是函数内,函数外也改变. 请看代码: 这里还要注意:通常我们不会返回局部变量的地址. 1 #include <stdio.h> 2 3 void swap_value(int x,int y) 4 { 5 int temp; 6 temp = x; 7 x = y; 8 y = temp; 9 printf("传值函数内的输出 %d %d \n"

内存(传值、传址、传引用)

前言: 最近对内存产生了兴趣.全是因为马士兵老师的一句Master key.马上要考二级了.大题构造函数比较多.形参有 int & x  这么写的.也有int *x 这么写的.还有普通 int x这么写的.我的乖乖这都是传的什么? int x 是 传值.int *x  是传址. int & x是传引用.那这三者传参数都有什么区别呢? 下面就用三个例子讲解 声明:下面堆栈的图其实是不正确的.八个基本类型(byte.short.int.long.char.float.double.boolea