通过C ++中的文件传递值

时间:2010-03-12 00:11:12

标签: c++ visual-studio-2008

我对C ++还很陌生,而且我一直在努力使我的程序看起来不像混乱的群集。

我终于摆脱了各种错误消息,但是现在应用程序崩溃了,我不知道从哪里开始。调试器只是抛出一个随机的十六进制位置。

提前谢谢你。

#include <iostream>

using namespace std;

struct Value{
public:
    int Val;
}*pc;

#include "header.h"

int main () {
    cout << "Enter a value: ";
    cin >> pc->Val;
    cout << "\nYour value is " << pc->Val << ". ";
    system ("pause");
    return 0;
}

5 个答案:

答案 0 :(得分:8)

在你的程序中,pc不是结构 - 它是指向结构的指针(因为*)。你没有把它初始化为任何东西 - 它指向一些虚假的位置。所以,要么在main()的第一行初始化它:

pc = new Value();

或者通过删除*使其成为非指针,并使用。而不是 - &gt;在整个计划中访问会员。

答案 1 :(得分:3)

pc是一个指针,但你没有给它指向有效的内存。你有几个选择。

您可以使用对象而不是指针,并像对象一样使用它:

struct Value{
public:
    int Val;
} c;

    ...
    cin >> c.Val;
    cout << c.Val;

你可以保持指针并让它指向有效的东西。最简单的方法是new一个对象并记住以后delete

int main()
{
    pc = new Value;

    ...

    delete pc;
}

答案 2 :(得分:3)

你从未初步化'pc'。这是一种未定义的行为。

答案 3 :(得分:0)

变量pc是结构pointer

Value

为什么不在int main()声明后首先指定它,比如

pc = new Value();

编译器默认为pc = NULL;。 PS。在C ++中,您必须管理自己的垃圾收集,所以一旦完成,请执行以下操作:

delete pc; //It frees memory....

希望这有帮助。

答案 4 :(得分:0)

#include <iostream>

using namespace std;

struct Value{
public:
    int Val;
}*pc;



int main () {


    pc = new Value();

    cout << "Enter a value: ";
    cin >> pc->Val;
    cout << "\nYour value is " << pc->Val << ". ";

    delete pc;

    system ("pause");
    return 0;
}