在c ++中初始化结构的指针

时间:2018-03-27 18:35:20

标签: c++ arrays pointers struct initialization

请帮助我理解我在这里做错了什么。

结构是

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;

提前致谢!

2 个答案:

答案 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;
    }
}