【发布时间】:2018-05-19 12:52:48
【问题描述】:
我对 C 完全陌生,但在使用指针和 typedef struct 结构时遇到了问题。
我定义了两个typedef structs:Student 和Class,我想知道这些是否是指针:
typedef struct _Class {
char name;
int grade;
} Class;
typedef struct _Student {
int number;
Class *classes;
} Student;
int main() {
Student **students = (Student**) malloc(100 * sizeof(Student*));
Student * studentOne;
(*studentOne).number = 453;
}
这只是我程序的一部分,但我的问题是:为什么我们将数组 students 定义为双指针,而将 Student *studentOne 定义为指针,但在 _Student 的 typedef 中我们有数组 @ 987654330@ 作为单指针数组。
所以在我的程序结构中Student 是一个指针,而结构Class 不是。为什么?
typedef struct的定义是一样的,那么什么时候用结构体作为指针呢?
感谢您的回答。
【问题讨论】:
-
与您的问题无关,但所有以下划线开头并后跟大写字母的符号(例如
_Class)都保留用于所有范围内的实现(编译器和标准库) .实际上,您可以为结构和类型别名使用相同的名称(例如typedef struct Class { ... } Class;)。 -
另请注意,您的示例代码存在很大缺陷,甚至无法编译。
-
typedef struct _Student { int number; Class *classes; }后面少了一个分号 -
Student未由您显示的代码定义。 -
“为什么我们将数组students定义为双指针,而Student *studentOne定义为指针”这只有编写代码的人知道。