新手求问C语言问题,如何给地址分配空间,谢谢各位大神

#include
#include
typedef struct _Stack
{
int value;
int preindex;
}Stack,*Stack1;

int main()
{
Stack S1=(Stack *)malloc(sizeof(Stack)*50);
Stack1 S[50];/
*如何给S分配空间,使用malloc报错**/
S1[0].value=5;
S[0]->value=2;
printf("%d\n",S1[0].value);
printf("%d",S[0]->value);
}

这样改一下就可以了
#include
#include
typedef struct _Stack
{
int value;
int preindex;
}Stack,*Stack1;
int main()
{
Stack1 S1=(Stack1)malloc(sizeof(struct _Stack)*50);//Stack1是指针类型要malloc动态内存分配
Stack S[50];//Stack 不是指针类型不用malloc,所以S是静态数组
S1[0].value=5;
S[0].value=2;//S是静态数组不能用指向符号
printf("%d\n",S1[0].value);
printf("%d",S[0].value);
}

Stack1 S = (Stack1)malloc(sizeof(Stack)*50);