代码之家  ›  专栏  ›  技术社区  ›  Ran Lavi

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

  •  -2
  • Ran Lavi  · 技术社区  · 7 年前

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

    结构是

    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 );
        }
    }
    

    我在输入值时出错。 “blabla中0x55e5effe(msvcr100d.dll)处的未处理异常:0xc000005:访问冲突写入位置0xcdcdcdcdcd。”

    提前感谢!

    2 回复  |  直到 7 年前
        1
  •  3
  •   Barmar    7 年前

    您需要提供变量的地址:

    scanf("%d", &arr[i].value);
    

    但由于您编写的是C++,因此更容易使用 cin :

    cin >> arr[i].value;
    
        2
  •  2
  •   Jive Dadson hmishra2250    7 年前

    在你发布的代码中,你需要一个符号和 & 之前 这个 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;
        }
    }