这是我来掘金的第一篇文张 写文章一直不是我的强项 本文章是我个人的理解 深拷贝浅拷贝大多数是看博客看出来的
其实这东西的本质就是指针
深拷贝 浅拷贝 c语言是怎么样的
这段代码给大家解释一下
前端的话 很少看到用指正来解释 深拷贝 浅拷贝 应为 学过c语言 低级语言才有的指针
#include <stdio.h> //声明头
void sum(int a, int b, int *c); // 头文件
int main(void){
int c = 0; // 声明变量c
sum(1, 2, &c); // (int a 这个是数字, int b这个是数字, int *c这个是数字指针)
printf("%d\n", c); // 输出这个c
/*
用js翻译
let c = 0;
sum(1, 2) // == 3
console.log(c) // == 0 <---->写个断点
*/
return 0;
}
void sum(int a, int b, int *c){ // 我没有返回任何值
*c = a + b;
}
/*
用js翻译
function(a, b){
return a + b;
}
*/
复制代码
我写文章真的不好 吐槽一下自己 我后面改进一下文笔哎
为什么要用c语言来解释我们来看一段代码
const a = {}
console.log(a) // a {}.x
console.log(a.x) // undefined
function hah(a){
a.x = 3
}
hah(a)
console.log(a.x)
// 补充一个知识点 console = 快照 不管在哪里 都会输出的
复制代码
console希望大家了解这东西
为什么会这样 应为 a是指针和上面那个c语言一样
{} // 内存地址 改的是内存 不是数值
拷贝的本质
我创建了一个内存地址
0xasdkfjajshdfk 里面存的也是地址 0xasdkfjajshdfk 存 不是值 是地址 0x21321rahfajsg 你改内存了 不改值
所以才会要拷贝
你问要怎么拷贝啊 这简单
const a = {}
const b = {}
console.log(a)
console.log(a.x)
function hah(a){
a.x = 3
}
hah(a)
hah(b)
console.log(a.x)
复制代码
新内存.b
这个就是拷贝原理 懂了之后能写出更多的拷贝
我发现这样写文章有毒 当是还是发了 我先组织好语言 ?