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是结构体还是结构体指针,如果是结构体为什么能使用->符号,这个符合不是指针才能用的吗? 展开
typedef struct student{
char num[10];
int score;
stu next;
};
y = (stu)malloc(sizeof(stu));
y->score = 90;
请问第一句(typedef struct student *stu;)是什么意思?y是结构体还是结构体指针,如果是结构体为什么能使用->符号,这个符合不是指针才能用的吗? 展开
3个回答
展开全部
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;
}
展开全部
typedef struct student *stu的含义,定义stu为指向结构体student的指针;
所以y = (stu)malloc(sizeof(stu));是指向一个通过动态内存分配而获得student结构体变量的指针。
y->score 取出变量的score成员
所以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是指针,理由你自己也说了。
即 struct student,可以看做是一个整体,表示一种结构体类型。
typedef struct student *stu;
意思就是stu 等同于struct student*
即stu y;
=>struct student *y等价
y是指针,理由你自己也说了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询