c语言把一级指针的值拷贝给二级指针报错

再给二级指针赋值时,把一级指针的值拷贝给二级指针不报错,但是有问题,请问这儿是什么原因呢?指针数据类型是char型,谢谢

//进栈
int Push(SqList s,ElemType *e) {
    
    if(s->top-s->base>=s->stackSize){
        printf("tnt\n");
        s->base=(ElemType **)realloc(s->base,(STACKINCREAMENT+STACK_INIT_SIZE)*sizeof(ElemType));
        if(!s->base) exit(ERROR);
        s->top=s->base+s->stackSize;
        s->stackSize+=STACKINCREAMENT;
    } 
    char ch[N];
    int i; 
    *(s->top)=(ElemType *)malloc(STACK_INIT_SIZE*sizeof(ElemType));
    for(i=0;e[i]!='\0';i++){
        *(s->top)[i]=e[i];
//        printf("%c ",*(s->top)[i]);
    }
    *(s->top)[i]='\0';
    printf("e:%s\n",e);
    printf("S:%s\n",*(s->top)); 
    (s->top)++;
    return OK;
}

img


初始化栈绝对没问题的,也分配空间了

s->top是什么类型啊???
怎么会是 (s->top)=(ElemType * )malloc(STACK_INIT_SIZEsizeof(ElemType));

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^