C语言结构体定义问题

typedefstructstudent*stu;typedefstructstudent{charnum[10];intscore;stunext;};y=(stu)m... typedef struct student *stu;
typedef struct student{
char num[10];
int score;
stu next;
};
y = (stu)malloc(sizeof(stu));
y->score = 90;
请问第一句(typedef struct student *stu;)是什么意思?y是结构体还是结构体指针,如果是结构体为什么能使用->符号,这个符合不是指针才能用的吗?
展开
 我来答
wanglixin1001
推荐于2016-01-24 · TA获得超过4174个赞
知道大有可为答主
回答量:1758
采纳率:80%
帮助的人:887万
展开全部

typedef struct student *stu;  //定义struct student *为stu。以后可以使用stu表示结构体指针类型。

y = (stu)malloc(sizeof(stu)); //

首先,这里的y应该是结构体指针,定义如struct student *y; 或者直接stu y;(因为上面的定义)

其次,这个定义不对,应该是y = (stu)malloc(sizeof(struct student)); 定义结构体指针指向一个结构体大小的空间。而不是指向结构体指针大小的空间。

完整的代码是:

#include <stdio.h>
#include <stdlib.h>
typedef struct student *stu;
struct student{ //不要typedef
    char num[10];
    int score;
    stu next;
};
// 或者定义为:
/*typedef struct student{
    char num[10];
    int score;
    stu next;
}student;  定义struct student 为student,因为不这么定义,当使用结构体时需要struct student在一起使用。*/


int main(void) {
stu y = (stu)malloc(sizeof(struct student));
y->score = 90;
free(y);
return 0;
}
freeeeeewind
2015-08-24 · TA获得超过1万个赞
知道大有可为答主
回答量:3227
采纳率:94%
帮助的人:1359万
展开全部
typedef struct student *stu的含义,定义stu为指向结构体student的指针;
所以y = (stu)malloc(sizeof(stu));是指向一个通过动态内存分配而获得student结构体变量的指针。
y->score 取出变量的score成员
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2015-08-24
展开全部
C语言中结构体名字要和struct合用才有效。
即 struct student,可以看做是一个整体,表示一种结构体类型。
typedef struct student *stu;
意思就是stu 等同于struct student*
即stu y;
=>struct student *y等价

y是指针,理由你自己也说了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式