在数据结构的链表,表示中 typedef struct Node * PtrToNode 和 typerdef struct List的表示说明
typedef struct Node * PtrToNode;
struct Node{
elementype data;
ptrToNode Next;
};
typeded ptrToNode List;
List L;
这段代码中 用typeder这个方式 来重命名 struct Node* 这个结构体类型,所以 ptrToNode 这个变量名就可以直接使用来代表 struct Node* 这个结构体类型,因此就有后面的ptrToNode Next;就等价于struct Node* Next;
因此后面的List,就代表struct Node* List
但是有没有想过,structu Node * 这个类型我们好像没见过,就算是我们自己定义的往往也是structu Node类型。所以,想一下 * 这个符号是什么意思
在以前定义指针的时候,是不是经常写 int *p;
在这个语句中,这个 * 号的代表的地址变量的标志,不参与运算。地址可以理解为指针,这句话应该没毛病吧。所以,以前学习的时候,都认为 * 号是指针的标志。所以,这里的int * 代表的是整型变量的地址。后面那个p只是个变量的名字而已,只是我们习惯 *p 这种写法,其实应该 int * p。这里纠结这个意义不大。
所以 上面的代码还可以写成
typedef struct Node{
elementype data;
ptrToNode Next;
} *PtrToNode;//这里不是结构体变量名,只是个别名而已。
typeded ptrToNode List;
List L
因此 我们看回这句申请空间的语句:
struct student* p=(struct student* )malloc (sizeof(struct student))
这段代码中,struct student * 就表示这个地址是student 结构体的地址
这里只是我的一些个人理解,如果有错误,请指出谢谢!