请帮助我理解我在这里做错了什么。
结构是
struct node
{
int value;
stack <int>losersStack;
};
主要是
int main()
{
int size;
printf("Enter size of arrary\n");
scanf("%d", &size);
node *arr = new node[size];
for(int i=0; i<size; i++)
{
printf("Enter a value\n");
scanf("%d", arr[i].value );
}
}
输入值时出错。 &#34; blabla中0x55e5effe(msvcr100d.dll)的未处理异常:0xC0000005:访问冲突写入位置0xcdcdcdcd。&#34;
提前致谢!
答案 0 :(得分:2)
您需要提供变量的地址:
scanf("%d", &arr[i].value);
但是因为你正在编写C ++,所以使用cin
更容易:
cin >> arr[i].value;
答案 1 :(得分:2)
在您发布的代码中,您需要之前使用&符号&
arr
表达式。
scanf("%d", &arr[i].value );
但不要使用所有低级别的东西。特别是,请避免使用new
。这里(减去对输入的错误检查)是C ++的方法。
#include <iostream>
#include <stack>
#include <vector>
struct node
{
int value;
std::stack <int>losersStack;
};
int main()
{
std::cout << "Enter size of arrary\n";
int size;
std::cin >> size;
std::vector<node> arr(size);
for(int i=0; i<size; i++)
{
std::cout << "Enter a value\n";
std::cin >> arr[i].value;
}
}