| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 289 人关注过本帖
标题:结构体小问题,高手进来飘一下下
取消只看楼主 加入收藏
newCpp
Rank: 5Rank: 5
来 自:火星
等 级:职业侠客
威 望:3
帖 子:256
专家分:375
注 册:2009-8-17
结帖率:97.83%
收藏
已结贴  问题点数:20 回复次数:0 
结构体小问题,高手进来飘一下下
#define NULL 0  
#include <iostream>
struct Student
{ long num;
float score;
struct Student *next;
};

int main()
{ Student a,b,c,*head,*p;
a. num=31001; a.score=89.5;             //对结点a的num和score成员赋值
b. num=31003; b.score=90;               //对结点b的num和score成员赋值
c. num=31007; c.score=85;               //对结点c的num和score成员赋值
head=&a;                                //将结点a的起始地址赋给头指针head
a.next=&b;                              //将结点b的起始地址赋给a结点的next成员
b.next=&c;                              //将结点c的起始地址赋给b结点的next成员
c.next=NULL;                            //结点的next成员不存放其他结点地址
p=head;                                 //使p指针指向a结点
do      
{cout<<p->num<<"  "<<p->score<<endl;     //输出p指向的结点的数据
p=p->next;                              //使p指向下一个结点
} while(p!=NULL);                         //输出完c结点后p的值为NULL
return 0;
}
这段代码里面确实是加上了很详细的注释,但他怎么输出的内容我有一点儿小问题
运行结果
这个代码之所弄了一个do循环能够输出a,b,c的内容
是不是因为这句a.next =&b;
b.next=&c;
c.next =NUll;
他们搞的互相的等于第二个数的第一个值,
然后用指针指向了a输出了a循环了一下指向了b
那这里第一个do循环按程序上head指向了a,p=head
那么就相当于是第一个循环p.num其实是输出了a
下面指针指向a的时候其实输出来的是b
按这样推法,最后输出到c的时候c是等于0.所以循环结束了
*next这里不是Student类型的指针吗?
那么这里的
a.next =&b;
b.next=&c;
c.next =NUll;
是啥意思,程序我按自己的分析大概明白了点,但我不知道
自己理解的对不对,尤其是上面那段小代码
啥意思?是指用next指针指向b还是别的啥意思,
虽然程序上加了注释但我对那术语理解的不是很好,
所以特来请各位大大帮忙分析一下,
谢谢
搜索更多相关主题的帖子: 结构体 
2009-09-01 09:14
快速回复:结构体小问题,高手进来飘一下下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.037145 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved