struct Student { int id; char name[20]; int age; }; struct Student { int id; char name[20]; int age; }STD; 这两个结构体的区别
时间: 2024-04-20 18:24:24 浏览: 122
这两个结构体的区别在于一个是声明了一个结构体类型,而另一个是声明了一个结构体类型的变量。
第一个声明的结构体类型是 `struct Student`,它定义了一个名为 `Student` 的结构体,包含了三个成员:`id`、`name`、`age`。
第二个声明的结构体类型是 `struct Student`,同时定义了一个名为 `STD` 的结构体变量。这个结构体变量 `STD` 是基于前面声明的结构体类型 `struct Student` 创建的,它也包含了三个成员:`id`、`name`、`age`。
因此,可以使用第二个声明的结构体变量 `STD` 来创建具体的学生对象,而第一个仅仅是对结构体类型的定义。
相关问题
struct Student { char name[20]; int age; float score; };struct Student *pStu = &stu;&stu是否代表结构体首地址?
不是的。在代码中没有定义变量 `stu`,所以不可能使用 `&stu` 来代表结构体的首地址。正确的写法应该是先定义一个 `struct Student` 类型的变量,再将该变量的地址赋值给指针变量 `pStu`。例如:
```
struct Student stu = {"Tom", 18, 90.5};
struct Student *pStu = &stu;
```
其中 `&stu` 表示变量 `stu` 的地址,也即结构体首地址。这个地址被赋值给指针变量 `pStu`,使得 `pStu` 指向了结构体变量 `stu`。
typedef struct student{ char * name; //名字 int age; //年龄 struct student * classmate; //同桌 }student, * pstudent;里struct student * classmate;
在这个结构体中,struct student *classmate是一个指向struct student类型的指针,它用于存储学生的同桌信息。在结构体定义中,可以使用结构体自身的指针类型来定义结构体中的成员,这种方式通常被称作“自引用”。这样做的好处是可以实现嵌套结构体,也就是一个结构体中包含另一个结构体的指针,从而实现更加复杂的数据结构。在这个例子中,每个学生都有一个同桌,因此可以使用结构体自身的指针类型来存储同桌的信息。
阅读全文