有关结点指针*H的疑惑,**H,*H,H各代表什么意思

声明一个链表,头结点是H,在判断链表是否为空时为什么采用*H==0的判断而不用H==0?
*H表示什么?H表示什么?H又表示什么?

供参考:

#include<stdio.h>

struct Node
{
    int    Data;
    struct Node *Next;
};

struct Node H,*H1,**H2;

int main()
{
    H.Data=0;//H: 一个结构体变量

    H1 = (struct Node*)malloc(sizeof(struct Node));//*H1:一个结构体指针变量
    H1->Data=1;

    H2 = &H1;  //**H2:一个指向结构体指针变量的指针

    printf("%d,%d,%d",H.Data,H1->Data,(*H2)->Data);

    return 0;
}