【发布时间】:2021-02-27 21:52:15
【问题描述】:
人头
class human
{
char name[];
public:
void setName(char nameValue[]);
char* getName();
}
人类 cpp
void human::setName(char nameValue[])
{
char name[] = "walter";
}
char* human::getName()
{
return name;
}
主cpp
int main()
{
human myHuman;
char name[] = "walter";
myHuman.setName(name);
char* result3 = myHuman.getName();
cout << "My human has a name of " << result3 << endl;
return 0;
}
我分配了字符串"walter",但是当我打印它时,我得到“╠╠╠╠╦ß╩d└²╒”。
我不明白哪一部分是错的。你能告诉我我的代码有什么问题吗?
【问题讨论】:
-
请使用
std::string -
我不能。这是作业。请帮我处理字符
-
你的程序有很多错误。最糟糕的是使用
char*而不是std::string。 -
setName 实现让我感到困惑。您正在为新的 char name [] 变量名称分配一个常量名称。 1)将头文件中的char name []定义改为char * name。 2)分配nameValue(setName的输入到相同的“名称”变量)。不要在 setName() 中重新定义新的字符名 []。
-
@bkk 仅通过该更改,您的类将指向外部字符数组。如果该数组超出范围并被销毁,则类中的指针将悬空。取消引用它会导致未定义的行为。