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