C言語を勉強中の者です。
参考書にて下記のmalloc関数のプログラムが書かれていたのですが、
str = (char *)の部分から何がどう行われているのかわかりません。

説明できる方よろしくお願いいたします。

#include<stdio.h>
#include<stdlib.h>

int main(void)
{
   char *str;
   int num,i;

   printf("何文字のAを用意しますか?\n");
   scanf("%d",&num);

   str = (char *)malloc(sizeof(char) * (num+1));
   if(!str){
     printf("メモリを確保できませんでした。\n");
     return 1;
   }


   for(i=0;i<num;i++){
       *(str+1) = 'A';
   }
   *(str+num) = '\n;
   printf("%sを用意できました。\n",str);

   free(str);

   return 0;
}