1  /  1  页   1 跳转 查看:1201

关于指针的问题。。。

关于指针的问题。。。

#include<iostream>
#include<stdlib.h>
using namespace std;
struct node
{
        int data;
        node *next;
};
int main()
{
        node *a,*b;
        node *p=new node;
        p->data=1;
        p->next=NULL;
        a=b=p;
        cout<<a->data<<" "<<b->data<<endl;
        p->data=2;
        p->next=NULL;
        b->next=p;
        b=p;
        cout<<a->data<<" "<<b->data<<endl;
        node *q;
        q=a->next;
        cout<<q->data<<endl;
        return 0;
}
大家好,我想问问,为什么输出结果是
1 1
2 2
2
而不是
1 1
1 2
2
我个人认为输出的应该是
1 1
1 2
2
 

回复:关于指针的问题。。。

呵呵呵,还是没有对指针这个概念没有搞清楚啊
暂时没有想好
 

回复:关于指针的问题。。。

代码的第17行开始
p->data=2;
  p->next=NULL;
  b->next=p;
  b=p;
  明明2的值只赋给p->data,然后把指针p赋给指针b,并没有把指针p赋给a,为什么
a->data的值是2呢???
 

回复: 关于指针的问题。。。



引用:
原帖由 切切C语 于 2007-12-4 21:21:00 发表
代码的第17行开始
p->data=2;
  p->next=NULL;
  b->next=p;
  b=p;
  明明2的值只赋给p->data,然后把指针p赋给指针b,并没有把指针p赋给a,为什么
a->data的值是2呢???


a=b=p;

a和 b指向一个结点。是不是。
 

回复:关于指针的问题。。。

a=b=p;
三个指针所指向的地址都是相同的。
 

回复:关于指针的问题。。。

这不是很简单的问题么?
 

回复:关于指针的问题。。。

node *a,*b;//问题在这里
        node *p=new node;
        p->data=1;
        p->next=NULL;
        a=b=p;//还有这里
a,b没有实际的内存空间(你忘记给他们申请了)
最后,他们和p指向一样的空间
所以最后你对a,b的操作相当于对p的操作
结果当然错误了
 

回复:关于指针的问题。。。

楼上说的不错
 
1  /  1  页   1 跳转

版权所有 程序员家园论坛   Sitemap

Powered by Discuz!NT 2.1.202    Copyright © 2001-2008 Comsenz Inc.
Processed in 0.078125 second(s) , 4 queries. 浙ICP备07502118号
返顶部