mallocが理解できないのでお聞きします。

char *z;
int a;

z = (char *)malloc(a * 2 + 1);

の様に使うみたいですが
(char *)の部分がわかりません。(a * 2 + 1)の部分はa×2+1バイト用意するってことですか?