let c={
name: '我的对象'
}
let d=c;
console.log(c, d); // {name: "我的对象"} {name: "我的对象"}
d.name="我是改变后的对象";
console.log(c, d); // {name:"我是改变后的对象"}{name:"我是改变后的对象"}
复制代码
一次输出c和b是c对象的原始值,后面我们改变了b对象下的name,第二次输出发现两个都被改变了,那为什么a也会被改变呢?
打开浏览器内存,可以看到一堆内容,我们过滤掉其他无用的,只选取string类型下面的数据,发现b所修改的内存信息就显示在第二个,点击详情会看到下面红色框里面的内容。
d in system / Context @130419
c in system / Context @130419
复制代码
后面的@130419就是内存的地址,我们发现d和c的内存地址只是一样的。
上面是对象类型的引用,当引用对象修改之后被引用对象也会被修改。那我们试试看基本类型会不会被修改!
let a="我是a";
let b=a;
console.log(a, b); // 我是a 我是a
b="我是b,我变了";
console.log(a, b); // 我是a 我是b,我变了
复制代码
输出结果是给b赋值了"我是b,我变了"之后,a并没有被修改。那我们看看内存发生了什么变化? 在内存页面我们再新建一个快照,结果如下:
https://www.tuicool.com/articles/bmY7Brr
值传值: 将一个变量的值拷贝一份赋给另一个变量。
如果这个变量的值修改的话不会影响到另外一个变量, 这两个变量之间没有任何联系。
<script type="text/javascript">
var num1=500
var num2=num1;
num2=40;
alert(num1); // 500;
</script>
引用传址:将一个变量的地址赋给另一个变量。
如果这个变量的值有修改的话那么另外一个变量将同时受到影响, 将一个变量的内存地址赋值给另外一个变量, 这两个变量同时指向同一个内存地址,
这两个变量是有联系的。
<script type="text/javascript">
var arr1=[3, 5, 7, 8, 10, 11];
var arr2=arr1;
arr2[0]=13;
alert(arr1); //[13, 5, 7, 8, 10, 11]
</script>
在javascript中基本数据类型的赋值操作都是赋值传值;复合数据类型的赋值都是引用传址。
C语言中,赋值运算符和赋值表达式是程序中常见的一种操作形式。它们用于将一个值赋给变量,是实现变量赋值和更新的基本手段。本文将深入介绍C语言中的赋值运算符和赋值表达式,包括常见的赋值运算符、赋值表达式的使用方法、运算规则和实际应用场景,以帮助读者更好地理解和掌握这一重要概念。
以下是我整理的关于C语言的一些入门级资料,免费分享给大家:https://m.hqyjai.net/emb_study_blue_short.html?xt=zxy
*请认真填写需求信息,我们会在24小时内与您取得联系。