char ポインターを扱うときに混乱します。次のコードを見てください。
class Person
{
char* pname;
public:
Person(char* name)
{
//I want to initialize 'pname' with the person's name. So, I am trying to
//achieve the same with different scenario's
//Case I:
strcpy(pname, name); // As expected, system crash.
//Case II:
// suppose the input is "ABCD", so trying to create 4+1 char space
// 1st 4 for holding ABCD and 1 for '\0'.
pname = (char*) malloc(sizeof(char) * (strlen(name)+1) );
strcpy(pname, name);
// Case III:
pname = (char*) malloc(sizeof(char));
strcpy(pname, name);
}
void display()
{
cout<<pname<<endl;
}
};
void main()
{
Person obj("ABCD");
obj.display();
}
ケース I の場合: 予想どおり、システム クラッシュ。
ケース II の出力:
あいうえお
ケース III の出力:
あいうえお
したがって、ケース II と III が同じ出力を生成する理由がわかりません!!!!..... クラスで char ポインターを初期化するにはどうすればよいですか?