malloc怎么返回结构体指针数组的首地址

malloc怎么返回结构体指针数组的首地址

问题描述:

typedef struct student{
int id;

}s ,*sp;

main(){
sp p1=(sp)malloc(10*sizeof(sp)); // 假设1

sp * p2=(sp *)malloc(10*sizeof(sp)); // 假设2

}
如果我要malloc一个长度为10 的结构体指针数组的话
假设1 和假设2 哪个返回了结构体指针数组的首地址?
哪个正确呢

 sp * p2=(sp *)malloc(10*sizeof(sp)); 

p2 既是指针的首地址。。

我觉得是假设2,p2应该充当数组名,保存数组首元素的地址,即指针的指针

我也觉的是假设2,有人说是假设1 。所以贴上来问一问