谁能帮我解释一下这段代码中的疑惑,有关引用类型的 Temp=A; //Node Temp = new Node(null); 这个对象上已经没有任何引用现在Temp和A都是new Node("A");这个对象的引用。就像C++里一样,2个指针指向同一个地址,修改任一个都有效。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 public static void main(String args[]) { Node A = new Node("A"); Node Temp = new Node(null); Temp = A; Node B = new Node("B"); Temp = B; System.out.println(A.toString()); System.out.println(Temp.toString()); }楼上的,照你这么说的话,我修改了一下main中的代码,这样也是Temp和A都是new Node("A")这个对象的引用,然后修改Temp使它指向B,但这个时候A并没有指向B啊,输入结果是A,B(只有Temp改变了)但是如果是.next确可以改变,这东西怎么这么奇怪啊 经过我的反复测试,得出这样一个结论:如果是A饿Temp都指向同一对象,那么改变Temp不会导致A的改变,但是改变Temp.next确会导致A.next的改变,这似乎不不合逻辑吧!请大家帮我解释这么问题,解决理解给分,不够就加分 A怎么会指向B,你只是修改了Temp你是不是c++更熟悉一些? 举个例子char *A=new char[100]; //buf1char *Temp= new char[100]; //buf2Temp=A; //c++里就有100个字节的内存泄漏char *B=new char[100]; //buf3 Temp=B; //temp这个指针只是指向buf3,和A有什么关系?(A还是指向buf1) 这个我明白,但是我不明白的是,为什么修改Temp.next会导致A.next的改变?这难道与Temp的改变不影响A的改变是一个道理吗? 一个实例new Node("A");A和Temp都是它的引用,由于A.next==Temp.next, 修改Temp.next不就是修改了A.next struct Node{ Node *next;};struct Node node;struct Node *A = node;struct Node *Temp=A; //相当于 struct Node *Temp=node;理解没? 先谢谢楼上的,但是我还是迷糊,既然"由于A.next==Temp.next, 修改Temp.next不就是修改了A.next"为什么不能"由于A==Temp, 修改Temp不就是修改了A"?我不太懂c++的 需要理解java中的“引用”A 和 Temp都是引用A 指向 new Node("A")产生的地址,Temp指向 new Node(null)产生的地址,当Temp = A 就将Temp指向A指向的地址那么,修改Temp就相当于修改了A。因为大家都是指向同一块内存区。当Temp = B 后,Temp又指向B指向的地址了,所以现在修改Temp,就不影响原来的A了! 哦,我现在明白了,当时是把自己给饶进去了,当时想的是因为Node next也是一个Node类型的数据,所以我老把Node.next和Node相类比其实.next不过就是它的一个数据成员而已,这样想就都理解了 问一个概率的问题 java实现树容易吗 输入血型,返回用户性格,遇到AB血型,char不能识别怎么办? 自己写的一个toy小程序.程序虽小但相当实用. 相信你也需要.. 高手请进 为什么我的XP老是自动关机? 关于ViewPort的问题,最后20分了,大家一定要帮我啊 Jbuilder8的光标定位有问题!!谁能帮我?? 主流支持JSP/SERVLETS环境的比较 Java Date计算开始结束时间 请问如何从class头和method头提取名字 一个多星期没来,散点分,大家来接啊
Node A = new Node("A");
Node Temp = new Node(null);
Temp = A;
Node B = new Node("B");
Temp = B;
System.out.println(A.toString());
System.out.println(Temp.toString());
}楼上的,照你这么说的话,我修改了一下main中的代码,这样也是Temp和A都是new Node("A")这个对象的引用,然后修改Temp使它指向B,但这个时候A并没有指向B啊,输入结果是A,B(只有Temp改变了)
但是如果是.next确可以改变,这东西怎么这么奇怪啊
如果是A饿Temp都指向同一对象,那么改变Temp不会导致A的改变,
但是改变Temp.next确会导致A.next的改变,这似乎不不合逻辑吧!
请大家帮我解释这么问题,解决理解给分,不够就加分
char *Temp= new char[100]; //buf2
Temp=A; //c++里就有100个字节的内存泄漏
char *B=new char[100]; //buf3
Temp=B; //temp这个指针只是指向buf3,和A有什么关系?(A还是指向buf1)
这难道与Temp的改变不影响A的改变是一个道理吗?
A和Temp都是它的引用,由于A.next==Temp.next, 修改Temp.next不就是修改了A.next
struct Node{
Node *next;
};struct Node node;struct Node *A = node;
struct Node *Temp=A; //相当于 struct Node *Temp=node;理解没?
为什么不能"由于A==Temp, 修改Temp不就是修改了A"?
我不太懂c++的
A 和 Temp都是引用
A 指向 new Node("A")产生的地址,
Temp指向 new Node(null)产生的地址,
当Temp = A 就将Temp指向A指向的地址
那么,修改Temp就相当于修改了A。因为大家都是指向同一块内存区。当Temp = B 后,Temp又指向B指向的地址了,所以现在修改Temp,就不影响原来的A了!
Node next也是一个Node类型的数据,所以我老把Node.next和Node相类比
其实.next不过就是它的一个数据成员而已,这样想就都理解了