输入到堆栈中的大小变量错误(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];
#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];