【发布时间】:2017-11-25 19:14:29
【问题描述】:
#include"iostream"
using namespace std;
class xxx
{
public:
char **a;
xxx();
~xxx();
};
xxx :: xxx()
{
a=new char*;
*a="10";
cout<<endl<<*a; // works fine
cout<<"Enter name:";
cin>>*a; // segmentation fault??
}
xxx :: ~xxx()
{
delete a;
}
main()
{
xxx x;
cout<<*x.a;
}
为什么我不能使用 cin 更改名称字段? 当我调用构造函数时,它会将值分配给变量,但在编辑时显示以下错误: 程序已停止工作。 方法也出现了同样的问题。我错过了什么。
【问题讨论】:
-
main返回int。 -
使用 std::string.
-
你应该阅读good C++ book
-
*a="10";在这里你分配一个指向文字的指针,它不是可写的内存。因此出现了段错误。 -
*a指向字符串文字。不能修改字符串文字。然而,您的程序试图这样做,因此表现出未定义的行为。