*L=(LinkList)malloc(sizeof(Node));难道没把l初始化吗?

#include<stdio.h>
#include<stdlib.h>
typedef struct Node
{
	char data;
	struct	Node*next;
}Node,*LinkList;
void InitList(LinkList *L){
	//实参就是void InitList(L)
	*L=(LinkList)malloc(sizeof(Node));
	(*L)->next=NULL;
}//L是指向头结点的指针,用来接收头指针;*L头结点;
void creatfromhead(LinkList L){
	char c;
	Node *s;
	c=getchar();
	while (c!='/n')
	{
		s=(Node*)malloc(sizeof(Node));//为什么不是	s=(Node)malloc(sizeof(Node));?
		s->data=c;
		L=s;
		s->next=L->next;
		putchar(c);
		c=getchar();

	}

}
void main(){
	LinkList *l;
	
	InitList(l);
	creatfromhead(*l);

}

*LinkList可以被认为是一种指向Node的指针吗?那声明l的时候为什么不是*LinkList l;?

 

 

typedef struct Node
{
	char data;
	struct	Node*next;
}Node,*LinkList;

Node:可以使用他定义结构体;

Node *:可以使用他定义结构体指针;

LinkList:可以是用他定义结构体指针;

因为定义是指定*LinkList时指针类型了,相当于宏定义一样。所以使用LinkList就是LinkList *