| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 501 人关注过本帖
标题:[求助]一个结构体的问题,百思不得其解,为什么呢
只看楼主 加入收藏
happycookie
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-8-16
收藏
 问题点数:0 回复次数:2 
[求助]一个结构体的问题,百思不得其解,为什么呢
下面一个函数中,添加的新成员如果直接写成struct stu NEW,不用指针就不成功,大虾们解释一下,谢了
Add() /*添加学生信息函数*/
{
int i;
struct stu *NEW;
struct stu *p;
NEW=(struct stu *)malloc(sizeof(struct stu)); /*新开辟一个空间*/
clrscr();
gotoxy(15,4);printf("Now input a student's basic information.");
gotoxy(15,6);printf("ID:");scanf("%s",NEW->ID);
for(p=&head;strcmp(p->ID,NEW->ID)!=0&&p->next!=NULL;p=p->next); /*检查原来学生链表中是否存在你输入的学生证号*/
if(strcmp(p->ID,NEW->ID)!=0) /*如果不存在就继续添加*/
{
gotoxy(15,7);printf("name:");scanf("%s",NEW->name);
gotoxy(15,8);printf("major:");scanf("%s",NEW->major);
gotoxy(15,9);printf("class:");scanf("%d",&NEW->Class);
NEW->next=NULL;
p->next=NEW; /*使原来最后一个学生中的指针指向新加的学生*/
head.Class++; /*总成员人数加1*/
gotoxy(15,11);
printf("Add successfully!");
}
else /*如果存在,就输出该学生证好已经存在的信息*/
{
gotoxy(15,12);
printf("Sorry,this ID has existed!");
}
}
修改后如下,就会出现错误结果
Add() /*添加学生信息函数*/
{
int i;
struct stu NEW;
struct stu *p;
clrscr();
gotoxy(15,4);printf("Now input a student's basic information.");
gotoxy(15,6);printf("ID:");scanf("%s",NEW.ID);
for(p=&head;strcmp(p->ID,NEW.ID)!=0&&p->next!=NULL;p=p->next);
if(strcmp(p->ID,NEW.ID)!=0) /*如果不存在就继续添加*/
{
gotoxy(15,7);printf("name:");scanf("%s",NEW.name);
gotoxy(15,8);printf("major:");scanf("%s",NEW.major);
gotoxy(15,9);printf("class:");scanf("%d",&NEW.Class);
NEW.next=NULL;
p->next=&NEW; /*使原来最后一个学生中的指针指向新加的学生*/
head.Class++; /*总成员人数加1*/
gotoxy(15,11);
printf("Add successfully!");
}
else /*如果存在,就输出该学生证好已经存在的信息*/
{
gotoxy(15,12);
printf("Sorry,this ID has existed!");
}
}
搜索更多相关主题的帖子: 百思不得其解 结构体 
2007-07-15 17:57
yohji
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2007-7-14
收藏
得分:0 
哦,这是生存周期的问题。
你不用malloc的话,在Add()里面定义的局部变量在Add()返回后就消失了,也就是说你链接进去的指针就无效了。

http:///
2007-07-15 18:37
happycookie
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-8-16
收藏
得分:0 
回复:(yohji)哦,这是生存周期的问题。你不用mallo...

哦,恍然大悟
谢谢啊

2007-07-15 18:38
快速回复:[求助]一个结构体的问题,百思不得其解,为什么呢
数据加载中...
 
   



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

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