en该呢 2023-02-09 17:50 采纳率: 100%
浏览 31
已结题

数据结构中通过malloc函数创建动态数组失败

####问题发生背景:数据结构顺序栈的初始化失败
####错误信息:S->base=(SElemType)malloc(MAXSIZEsizeof(SElemType));


```c
typedef struct 
{
    int example;
}SElemType;

typedef struct 
{
    SElemType *base;
    SElemType *top;
    int stacksize;
}SqStack;

int main()
{
Status InitStack(SqStack *S);

SqStack *S;
InitStack(S);
printf("%o",S->base);
    
}

Status InitStack(SqStack *S)
{
    S->base=(*SElemType)malloc(MAXSIZE*sizeof(SElemType));
    if(!S->base) exit(OVERFLOW);
    S->top=S->base;
    S->stacksize=MAXSIZE;
    return OK;    
}

详细报错:[Error] expected expression before 'SElemType'

尝试方法:通过调试定位报错语句,最后发现是S->base编译系统无法理解,但S->表示指针所指向的结构体成员变量,语法上是可行的,百思不得其解。


###希望各位掌握相关知识的友友不吝赐教
  • 写回答

3条回答 默认 最新

  • qzjhjxj 2023-02-10 14:36
    关注

    改动处见注释,供参考:

    #include <stdio.h>
    #include <stdlib.h>
    #define MAXSIZE  50   //修改 
    #define OVERFLOW -1   //修改
    #define OK 1          //修改
    typedef int Status;   //修改
    typedef struct{
        int example;
    }SElemType;
    typedef struct{
        SElemType* base;
        SElemType* top;
        int stacksize;
    }SqStack;
    int main()
    {
        Status InitStack(SqStack * S);
        SqStack* S;
        S = (SqStack*)malloc(sizeof(SqStack)); //修改
        InitStack(S);
        printf("%o", S->base);
        return 0;
    }
    
    Status InitStack(SqStack* S)
    {
        S->base = (SElemType*)malloc(MAXSIZE * sizeof(SElemType));  //修改
        //S->base = (*SElemType)malloc(MAXSIZE * sizeof(SElemType));
        if (!S->base) 
            exit(OVERFLOW);
        S->top = S->base;
        S->stacksize = MAXSIZE;
        return OK;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月19日
  • 已采纳回答 2月11日
  • 创建了问题 2月9日

悬赏问题

  • ¥30 微信小程序蓝牙数据透传
  • ¥15 加氢站氢负荷数据集来源
  • ¥15 umi接入sentry遇到问题
  • ¥15 HBuilderX打包H5网页,扫码模块无法使用
  • ¥15 Javascript跳转页面后,无法执行后面代码,如何解决?
  • ¥15 echarts绘制图表
  • ¥15 请教两个关于高德地图定位不准的技术问题
  • ¥15 根据企业名称 对照两个文件 样本筛选/匹配
  • ¥15 Linux环境下CA证书更新问题
  • ¥15 sqlserver语句提取结果以外数据