拷贝传值和引用传值

1、拷贝传值:基本数据类型都是“拷贝传值”。

拷贝传值,就是将一个变量的值“拷贝”一份,传给了另一个变量。

拷贝传值中,两个变量之间没有任何联系,修改其中一个变量的值,另一个不会改变。

这两个变量之间,是相互独立的,没有任何联系。

       基本数据类型存在“快速内存”“栈内存”中的。因为,基本数据类型只有一个变量名和一个变量值

2、引用传址:复合数据类型都是“引用传地址”

复合数据类型的存储分两步:

    (1)将变量名和数据地址存在“快速内存”“栈内存”中。

    (2)具体的数据存在“慢速内存”“堆内存”中。

  引用传址:将一个变量的数据地址,“拷贝”一份,传给另了另一个变量。这两个变量,指向“同一个地址”。

  大家共享同一份数据。

  如果其中一个变量的值发生了改变,那么,另一个变量的值也得变。要变一起变。

  因此,这两个变量是有联系的,要变大家一起变

时间: 2024-12-29 12:13:49

拷贝传值和引用传值的相关文章

PHP基础------引用传值

<?php ////引用传值 //$a = 3; //$b = $a; //$a = 4; // //echo $b;//考虑$b值是多少,$a和$b分别在不同的空间,改变$a的值不会影响$b $a = 4; $b = &$a; $a = 8; echo $b; //&$a相当于把$a的地址传递给$b,此时两个变量指向同一个空间,所以改变$a的变量地址$b会随之改变

Android之线程安全的单例模式,Adapter注意事项之引用传值

线程安全的单例模式单位模式一般写法如下: public static FestivalLab mInstance; private FestivalLab() { } public static FestivalLab getInstance() { if (mInstance == null) { mInstance = new FestivalLab(); } return mInstance; } 这样写不是线程安全的,因为如果两个线程都进入到这里,会实例化两次.那么如何优化呢? 线程安全

Js 赋值传值和引用传址

赋值传值和引用传址 在JavaScript中基本数据类型都是赋值传值,复合数据类型都是引用传址(传地址) ? 基本数据类型的变量名和数据是直接存在"快速内存"(栈内存)中,而复合数据类型(对象和数组)的存储分两个部分:实际数据存在"慢速内存"(堆内存)中,栈内存中只存变量名和数据在堆内存中的位置(地址)

PHP引用传值规范问题

在我上一篇:  shopnc 商城源码阅读笔记--开篇概述   中,遇到了一个PHP引用传值导致的错误,情况大致如下: 在我查阅PHP官方文档  的中文版的时候   http://php.net/manual/zh/language.references.pass.php 看到如下描述: 注意在函数调用时没有引用符号——只有函数定义中有.光是函数定义就足够使参数通过引用来正确传递了.在最近版本的 PHP 中如果把 & 用在foo(&$a); 中会得到一条警告说“Call-time pass

Python引用传值总结

Python函数的参数传值使用的是引用传值,也就是说传的是参数的内存地址值,因此在函数中改变参数的值,函数外也会改变. 这里需要注意的是如果传的参数类型是不可改变的,如String类型.元组类型,函数内如需改变参数的值,则相当于重新新建了一个对象. # 添加了一个string类型的元素添加到末尾 def ChangeList(lis): lis.append('hello i am the addone') print lis return lis = [1, 2, 3] ChangeList(

属性传值,协议传值,block传值,单例传值四种界面传值方式

一.属性传值 对于属性传值而言,相对于其它的三种 方法来说,是最基础,最简单的一种 方法,但,属性传值 有很大的局限性,因为是适用于第一个界面向第二个界面传 值,第二个向第三个界面传值等等.N界面向N + 1界面传值.而在此基础上,必须知道跳转界面的明确位置及所要传的值的具体类型.在第二个界面中声明所要传值 类型的属性. @interface SecondViewController : UIViewController //声明一个字符串属性来保存第一个界面传过来的字符串内容 @propert

M牛C原创博客——MVC 模式中正向传值、反向传值

多vc之间的传值 1)正向传值 当AVC推出BVC时,a给b传值叫做正向传值 2)正向传值实现步骤 step1:bvc要提供一个公开的属性 //公开一个属性,用于接收其他类出入的字符串 @property(nonatomic,copy)NSString *message; step2:avc在推出bcc之前,为bvc公开的属性赋值 //1.创建要推出的bvc的实例 BViewController *bvc = [[BViewController alloc]initWithNibName:@"B

关于java中基础数据类型传值和引用类型传值的总结

先看一组代码: public static void main(String[] args) { int a = 1; int b = 2; int[] array = {1,2}; swap(a, b); System.out.println(a + " " + b); swap(array, 0, 1); System.out.println(array[0] + " " + array[1]); } public static void swap(int x,

iOS中多视图的传值 属性传值和代理传值

首先创建两个类 ,FirstViewController和SecondViewController,都继承于UIViewController 1 #import "AppDelegate.h" 2 #import "FirstViewController.h" 3 4 @interface AppDelegate () 5 6 @end 7 8 @implementation AppDelegate 9 10 11 - (BOOL)application:(UIAp