(char*)malloc(5*sizeof(char))

是在堆内申请了5个char的地址还是一个地址如果是一个为什么?

char在C中是一个字节,你乘以5就是五个字节,你申请了一个内存里有五个字节的地址

申请了5个连续的字节,当然就有5个连续的地址了,但是返回的是首地址。因为空间是连续的,所以可以通过首地址计算其他地址。
比如char *p=(char *)malloc(5*sizeof(char));

 p就指向一个有5个连续空间的首地址,p+1就是第二个空间的地址。
总结就是申请的是空间,有多少空间就有多少地址,但是只返回首地址,申请失败返回NULL

(char*)malloc(5*sizeof(char))

一个sizeof(char)表示一个字节的空间,乘以5,表示5个字节空间,在堆(heap)上开辟5个char的连续地址的空间。所以是5个char的地址.

malloc()的参数是内存大小,一个sizeof(char)表示一个字节的空间,乘以5,表示5个字节空间,在堆(heap)上开辟5个char的连续地址的空间。所以是5个char的地址.