| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 509 人关注过本帖
标题:大家好,我刚学c语言,想问一个关于链接的问题,一直绕不过弯,请指点迷津, ...
只看楼主 加入收藏
whatfun
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-10-15
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
大家好,我刚学c语言,想问一个关于链接的问题,一直绕不过弯,请指点迷津,谢谢
#include<stdio.h>
#define NULL 0
struct student
{long num;
 float score;
 struct student *next;
};
void main()
{struct student a,b,c,*head,*p;
 a.num=10101;a.score=89.5;
 b.num=10103;b.score=90;
 c.num=10107;c.score=85;
 head=&a;
 a.next=&b;
 b.next=&c;
 p=head;
 do
   {printf("%ld %5.lf\n",p->num,p->score);
    p=p->next;
   }while(p!=NULL);
}


   上面例题在 do...while 第一次时 p 存在着是 head(也是就是&a的地址)对吧,那到了 p=p->next 按程序的 意 思 p 存放是a.next(也就是&b的地址)是吗?可我到这里我就不解了,p=p->next又没有自增(在我认为应该是++p->next),如何跳到下个地址?(按我的想法是 p 因为没有自增 应该是一直存放着 &a才是啊? 好乱啊...
   谢谢啊,请指点迷津

[ 本帖最后由 whatfun 于 2009-10-15 10:08 编辑 ]
搜索更多相关主题的帖子: c语言 链接 
2009-10-15 09:45
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:10 
如: p=&a; p->next=&b;
p=p->next; /* 这看做指针赋值,把p->next指向b的地址赋于p,赋值后p就指向b */

努力—前进—变老—退休—入土
2009-10-15 10:03
huilangbccn
Rank: 2
等 级:论坛游民
帖 子:4
专家分:10
注 册:2009-10-15
收藏
得分:10 
指针变量p和head是用来存放实体变量a b c在内存中的地址的

a b c的内存地址 可以用&取得 比如&a

p=p->next 就是把&b赋值给p 这样p就可以用来引用b这个实体了

p不需要自增 也不能自增 因为a b c在内存中不一定是连续的单元

++p代表的地址是未知的 贸然用会导致混乱
2009-10-15 10:06
evergogo
Rank: 2
来 自:宇宙-C星球
等 级:论坛游民
帖 子:64
专家分:25
注 册:2009-10-11
收藏
得分:0 
UserYuH 你当我老师吧!

异星球#include变种的C!
2009-10-15 10:24
whatfun
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2009-10-15
收藏
得分:0 
以下是引用UserYuH在2009-10-15 10:03:35的发言:

如: p=&a; p->next=&b;
p=p->next; /* 这看做指针赋值,把p->next指向b的地址赋于p,赋值后p就指向b */
谢谢,谢谢2楼,3楼的大大
   我懂了,自己没去注意看,哎,很像函数的递回归,student.a 包含着指向 b的指针,当p->next的时候,其实就是读取 student.a.*next即(b的地址),这样理解应该错不了吧
   递回归其实我也看不大懂,还会请教各位大大的,谢谢
2009-10-15 10:24
UserYuH
Rank: 12Rank: 12Rank: 12
来 自:毅华
等 级:火箭侠
威 望:8
帖 子:720
专家分:3300
注 册:2009-8-10
收藏
得分:0 
回复 4楼 evergogo
谢谢这么看得起我,一小时多少钱呀!呵呵,开玩笑的,都是学者,共同进步。
·
楼主,学C要稳扎稳打,慢慢消化。

努力—前进—变老—退休—入土
2009-10-15 11:53
快速回复:大家好,我刚学c语言,想问一个关于链接的问题,一直绕不过弯,请指点 ...
数据加载中...
 
   



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

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