C语言结构体定义问题

发布网友 发布时间:2022-04-21 17:47

我来回答

3个回答

热心网友 时间:2023-08-18 01:25

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;
}

热心网友 时间:2023-08-18 01:25

typedef struct student *stu的含义,定义stu为指向结构体student的指针;
所以y = (stu)malloc(sizeof(stu));是指向一个通过动态内存分配而获得student结构体变量的指针。
y->score 取出变量的score成员

热心网友 时间:2023-08-18 01:26

C语言中结构体名字要和struct合用才有效。
即 struct student,可以看做是一个整体,表示一种结构体类型。
typedef struct student *stu;
意思就是stu 等同于struct student*
即stu y;
=>struct student *y等价

y是指针,理由你自己也说了。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com