Skip to content
字数
1026 字
阅读时间
5 分钟

结构体就是对象 指针就是引用

涉及到链表的操作,一定要在纸上把过程先画出来,再写程序。 要区分清楚 引用(也就是指针)和对象,对象是程序中创建的实际数据实体,而引用是指向该对象的一个指针或别名。引用使得你可以通过一个变量来访问和操作对象,而不需要复制整个对象。简单来说,引用是指向对象的"地址",而对象是存储在内存中的实际数据。

{}是创建对象的语法, 是一种数据结构, 只能赋给引用类型; =是给变量赋 值类型 或者 引用类型的语法 . 是用来访问数据结构成员的, 在c语言中是各种结构体的成员, 在js中,由于对象可以代表一切数据结构, 所有 可以说是 访问对象的成员(对象的属性)的语法 {}=是结构赋值的语法, 和 . 其实是一个功能,比如 const { textare } = input 相当于 const textare = input.textare, 有点类似于 int * textare = & input

const ytextarea : {} = yinput.ctextarea; const ytextarea = yinput.ctextarea; int * input= &textarea ”: 看这两个语句, 假设ctextarea是一个对象, 那么ytextarea 就是引用变量名, input 也是一个数据结构的引用变量名,ctextarea是这个yinput 引用变量指的对象的一个成员, ytextarea是ctextarea的新的引用变量名; input是一个指针, textare是这个指针变量指的地址(ytextarea )所代表的值,&textarea(ctextarea)是地址本身 可以把c语言中的指针类型看成一种数据结构, 这种数据结构中有指针变量名和指针指向的地址, 指针变量名你给可以看作是引用变量名, 指针指向的地址就是这种数据结构的成员 在 ytextarea外面加个{}, 就变成{ytextarea}, 和 yinput为同一个等级;我在input外面加个*,就变成*input, 和textarea是同一个等级

![[2024-10-19 00-45-05 1.mkv]]

function modify(obj) {
    obj.value = 100;  // 修改对象的属性
}

let obj = { value: 10 };
modify(obj);

console.log(obj.value);  // 输出 100
#include <stdio.h>

void modify(int *p) {
    *p = 100;  // 通过指针修改外部变量
}

int main() {
    int a = 10;
    modify(&a);  // 传递变量 a 的地址
    printf("%d", a);  // 输出 100
    return 0;
}

在链表数据结构中, 我误以为 current.next 改变后 , current 所代表(引用)的节点也变了, 就是犯了以下第一个中的错误"引用在赋值之前就已经建立了关系,而 a 的重新赋值不会影响 b"

let a = {};   
a.c = 10;     

let b = a; 
a = 11;       

console.log(b);
  • a.c = 10;:给对象 a 添加一个属性 c,并赋值为 10。此时,a 指向的对象变成 { c: 10 }

  • let b = a;:将 a 赋值给 b。因为 a 是引用类型,b 现在指向与 a 相同的内存地址,也就是说,ba 引用了同一个对象 { c: 10 }

  • a = 11;:将 a 重新赋值为 11,这会让 a 不再指向对象 { c: 10 },而是指向一个新的 number 类型值 11。然而,b 仍然引用最初的对象 { c: 10 },因为 ba 之间的引用在赋值之前就已经建立了关系,而 a 的重新赋值不会影响 b

  • console.log(b);:输出 b,由于 b 仍然指向 { c: 10 },因此输出的结果将是该对象 { c: 10 }

let a = {};   // 声明对象 a
a.c = 10;     // 给对象 a 添加属性 c,值为 10

let b = a;    // 让 b 引用 a 指向的同一个对象

a.c = 11;     // 修改 a 的属性 c 的值为 11

console.log(b.c);  // 输出 b 的属性 c 的值

贡献者

The avatar of contributor named as sunchengzhi sunchengzhi

文件历史

撰写