木木em哈哈 2022-05-09 18:59 采纳率: 0%
浏览 334

C2100非法的间接寻址问题


#include <iostream>
using namespace std;
#define MAXSIZE 100
typedef int Status;
typedef struct
{
    int id;
    string name;
    int age;
    int gender;
}student;
typedef struct
{
    student* base;//栈底指针
    student* top;//栈顶指针
    int stacksize;//栈可用的最大容量
}SqStack;
Status InitStack(SqStack& S)
{
    S.top = new student[MAXSIZE];//分配最大容量
    if (!S.base) 
    {
        cout << "分配失败" << endl;
        return 0;
    }//分配错误
    S.top = S.base;//top初始威base空栈
    S.stacksize = MAXSIZE;//stacksize设为MAXSIZE
    return 1;
}
void menu()
{
    cout << "--------------------1.入栈          2.出栈--------------------" << endl;
    cout << "--------------------3.删除栈顶      4.遍历栈--------------------" << endl;
    cout << "--------------------5.求栈长度      6.清空栈--------------------" << endl;
    cout << "--------------------7.销毁栈        8.退出--------------------" << endl;
}
//入栈功能
void PushToStack(SqStack& s)
{
    int n, flag;
    student *e;
    cout << "请输入需要入栈的元素个数:" << endl;
    cin >> n;
    for (int i = 0; i < n; i++)
    {
        cout << "请输入各元素的值的id、name、age、gender:" << endl;
        cin >> e->id>>e->name>>e->age>>e->gender;
        if (s.top - s.base == MAXSIZE)
        {
            cout << "栈满,出栈" << endl;
            return;
        }
        *(s.top)->id = e->id;//错误位置
        *(s.top)->gender = e->gender;//错误位置
        *(s.top)->id = e->id;//错误位置
        *(s.top)->name = e->id;//错误位置
        s.top++;
        //这里如果是*(++s.top)则*(s.base)是未知数字;
    }
}



怎么改

  • 写回答

1条回答 默认 最新

  • SmallAntJ 2022-05-10 05:32
    关注

    程序有四个问题:
    1、21行应该是

    S.base = new student[MAXSIZE]; 
    

    2、42行e需要初始化一个对象

    student *e = new student;
    

    3、54行应该是

    (s.top)->id = e->id; // s.top是student*, 用->访问成员变量
    

    或者是

    (*(s.top)).id = e->id; // *(s.top)是student对象,用.访问成员变量,同时.的优先级高于*,需要加括号
    

    4、54到57行左右变量名不一致

    评论

报告相同问题?

问题事件

  • 创建了问题 5月9日

悬赏问题

  • ¥15 Java与Hbase相关问题
  • ¥20 bash代码推送不上去 git fetch origin master #失败了
  • ¥15 LOL外服加入了反作弊系统,现在游戏录像rofl文件离线都无法打开
  • ¥45 工程软件单片机设计课题要求
  • ¥15 在centos7安装conda
  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译
  • ¥15 STM32F103上电短路问题
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥15 (标签-python|关键词-char)