c语言指针赋值问题,捉摸不透

int *a=NULL;
printf("%x\n",&a);
int *b=a;
printf("%x",&b);

如上int *b=a是什么操作呢,能详细说一下吗?
或者是跟什么其他写法一样

int*b=a;这条语句是将a的值(指针)赋给b,即b的值也是NULL。即b和a指向了同一个地址,都是指向内存的空地址,也就是不指向任何内存空间(值为NULL)。

就是指将变量a的地址赋值给变量b,叫做指针赋值,这样子,b和a就指向同一个地址。