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日

悬赏问题

  • ¥15 快手联盟怎么快速的跑出建立模型
  • ¥15 关于腾讯云服务器中,PHP页面无法打开的问题
  • ¥60 如何把照片修复成原始拍摄图
  • ¥80 Exited too quickly (process log may have details)
  • ¥15 爬知乎登录之后内容加载不出来
  • ¥15 怎么用protues测量通频带
  • ¥15 zepelin使用sparkInterpreter 异常
  • ¥15 paho mqtt 接收不到消息
  • ¥15 函数r关于两个分量y,z方向上的图像,分开画r随y的图像,r随z的图像
  • ¥15 如何用Matlab求Pearcey函数的数值积分?