| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6776 人关注过本帖
标题:一个函数返回值为指向结构体的指针的问题
只看楼主 加入收藏
yuanyang317
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-8-7
收藏
 问题点数:0 回复次数:14 
一个函数返回值为指向结构体的指针的问题

#include <stdio.h>
#include <stdlib.h>
struct student
{
int num;
char name[10];
struct student *next;
}

struct student *creat(int x) //这里不知道为什么错??
{
struct student *head,*p,*q;
int i;
for(i=0;i<x;i++)
{
p=(struct student*)malloc(sizeof(struct student));
printf("学生%d学号、姓名,i+1);
scanf("%d%s",&p->num,p->name);
if(i=0)
head=p=q;
else
{
q->next=p;
p->next=0;
q=p;
}
}
return(head);
}

void print(struct student *x)
{
struct student *m;
m=x;
printf("链表输出:\n");
while(m!=NULL)
{
printf("%d---%s",m->num,m->name);
m=m->next;
}
}

int main()
{
int n;
struct student *s;
printf("学生人数n=");
scanf("%d",&n);
s=creat(n);
print(s);
return 0;
}

我这个程序在VC++6.0下编译,不知道为什么struct student *creat(int x) 这句话老是编译不过,它的提示错误是:error C2236: unexpected 'struct' 'student' 我是在是想不出哪里错,请大家帮我看一下,我原本是想定义一个函数creat,它的返回值为一个指向结构体的指针。

搜索更多相关主题的帖子: 返回值 结构体 指针 函数 
2007-08-17 20:51
yuanyang317
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-8-7
收藏
得分:0 
回复:(yuanyang317)一个函数返回值为指向结构体的指...

还是没弄懂,望大家指点指点一下

2007-08-17 21:49
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 

#include <stdio.h>
#include <stdlib.h>
struct student
{
int num;
char name[10];
struct student *next;
}; //错误 一

struct student *creat(int x) //这里不知道为什么错??
{
struct student *head,*p,*q;
int i;
for(i=0;i<x;i++)
{
p=(struct student*)malloc(sizeof(struct student));
printf("学生%d学号、姓名",i+1); //错误 二
scanf("%d%s",&p->num,p->name);
if(i=0)
head=p=q;
else
{
q->next=p;
p->next=0;
q=p;
}
}
return(head);
}

void print(struct student *x)
{
struct student *m;
m=x;
printf("链表输出:\n");
while(m!=NULL)
{
printf("%d---%s",m->num,m->name);
m=m->next;
}
}

int main()
{
int n;
struct student *s;
printf("学生人数n=");
scanf("%d",&n);
s=creat(n);
print(s);
return 0;
}

2007-08-17 22:01
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
好像还是有问题 是运行时的错误


2007-08-17 22:31
百年不亮
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:789
专家分:0
注 册:2006-4-14
收藏
得分:0 
哦,可是我只管他语法的错误。
2007-08-17 22:45
yuanyang317
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-8-7
收藏
得分:0 
就是就是,它运行的时候要跳出来,是怎么回事呢
2007-08-17 22:55
yuanyang317
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-8-7
收藏
得分:0 

以上你说的错误我都改正了,现在编译没错了,就是运行的时候一输入学号名字就会出错,为什么呢

2007-08-17 23:01
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 
我知道了,= 和 == 不同啊
struct student *creat(int x) //这里不知道为什么错??
{
struct student *head,*p,*q;
int i;
for(i=0;i<x;i++)
{
p=(struct student*)malloc(sizeof(struct student));
printf("学生%d学号、姓名",i+1); //错误 二
scanf("%d%s",&p->num,p->name);
if(i == 0) //这个低级错误害得我找了一个小时
head = q = p;
else
{
q->next=p;
//p->next=0;
q=p;
}
if(i == x)
q->next = NULL;
}
return(head);
}

[此贴子已经被作者于2007-8-17 23:31:19编辑过]


2007-08-17 23:29
nwpu063417
Rank: 3Rank: 3
等 级:论坛游民
威 望:8
帖 子:428
专家分:28
注 册:2007-5-11
收藏
得分:0 

我还有一个问题:
这段代码这样写在链表输出时会出错
struct student *creat(int x)
{
struct student *head,*p,*q;
int i;
q =p=(struct student*)malloc(sizeof(struct student));
for(i=0;i<x;i++)
{
p=(struct student*)malloc(sizeof(struct student));
printf("学生%d学号、姓名:",i+1);
scanf("%d%s",&p->num,p->name);
if(i==0)
head = p;
else
{
q->next=p;
q=p;
}
}


而下边的这种却不会出错:
/*只是在红色文字处有所改动*/
struct student *creat(int x)
{
struct student *head,*p,*q;
int i;
//q =p=(struct student*)malloc(sizeof(struct student));
for(i=0;i<x;i++)
{
p=(struct student*)malloc(sizeof(struct student));
printf("学生%d学号、姓名:",i+1);
scanf("%d%s",&p->num,p->name);
if(i==0)
head = q = p;
else
{
q->next=p;
q=p;
}
}


为什么呀


2007-08-17 23:38
yuanyang317
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2007-8-7
收藏
得分:0 
我没看懂有什么不同啊
2007-08-18 00:02
快速回复:一个函数返回值为指向结构体的指针的问题
数据加载中...
 
   



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

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