输入到堆栈中的大小变量错误(C++)

input to size variable error in stack (c++)

#include <iostream>
using namespace std;

struct stack{
    int size;
    int top;
    int *s;
};

void create(struct stack *st){
    cout<<"enter size :";
    cin>>(&st->size);      ///This line poses error when i run the program
    st->top=-1;
    st->s=new int[st->size*sizeof(int)];
}

void display(struct stack st)
{
    for(int i:(st->s)){
        cout<<i;
    }
}

在 create 函数中,当编译器尝试获取输入时,它显示错误“错误:‘operator>>’不匹配(操作数类型为‘std::istream {aka std::basic_istream} ' 和 'int*')”。错误是不可理解的。谁能帮忙解决这个问题?

&st->size 是一个 int*。您无法将 cin 读入 int*。由于您只需要读取大小,删除 & 应该可以解决它:

cin >> st->size;

您在 display 中的 for 循环也不正确。您需要执行以下操作:

for(int i = 0; i < size; ++i)
    cout << st->s[i];

此外,这一行:

st->s=new int[st->size*sizeof(int)];

似乎很奇怪。如果你想在数组中有 st->size 个元素,那么你只需要:

st->s = new int[st->size];