为什么这个用数组实现的顺序栈在主函数种定义后无法初始化成功?

为什么这个数组实现的顺序栈无法初始化成功?运行完就是一个黑屏?

#include<stdio.h>
#define maxsize 100
typedef char datatype;
 
//使用数组来实现实现顺序栈.
typedef struct a
{   datatype data[maxsize];
    int top;
}Stack;
 
//初始化栈
void init(Stack *s)
{   
    s->top=-1; 
}

int main(){
    Stack *a;
    init(a);
    printf("初始化成功");
    return 0;

 

#include<stdio.h>
#include<malloc.h>
#define maxsize 100
typedef int datatype;
 
//使用数组来实现实现顺序栈.
typedef struct a
{   datatype data[maxsize];
    int top;
}Stack;
 
//初始化栈
void init(Stack *s)
{   
    s->top=-1; 
}

int main(){
    Stack *a;
    a=(Stack*) malloc (maxsize* sizeof(Stack));
    init(a);
    printf("初始化成功");
    return 0;

谢谢