C++ 使用new命令实例化后显示垃圾的char数组
我尝试将以下4个东西连接到一个char数组(在C++中),这样我就可以返回我的数组,但是除了这4个东西之外,我的数组中也有垃圾。有人能帮忙吗C++ 使用new命令实例化后显示垃圾的char数组,c++,arrays,C++,Arrays,我尝试将以下4个东西连接到一个char数组(在C++中),这样我就可以返回我的数组,但是除了这4个东西之外,我的数组中也有垃圾。有人能帮忙吗 char* Guest::toString() { char * p = new char[30]; p[0] = firstName[0]; p[1] = '.'; p[2]=lastName[0]; p[3] = '.'; return p; } 数组的元素在创建时是未初始化的,因此在您的例
char* Guest::toString()
{
char * p = new char[30];
p[0] = firstName[0];
p[1] = '.';
p[2]=lastName[0];
p[3] = '.';
return p;
}
数组的元素在创建时是未初始化的,因此在您的例子中,所有超过p[3]的元素仍然是未初始化的。试图访问这些未初始化的元素将导致未定义的行为,这就是您获取垃圾数据的原因 我相信您可以使用以下方法对其进行初始化:
char * p = new char[30]();
数组的元素在创建时是未初始化的,因此在您的例子中,所有超过p[3]的元素仍然是未初始化的。试图访问这些未初始化的元素将导致未定义的行为,这就是您获取垃圾数据的原因 我相信您可以使用以下方法对其进行初始化:
char * p = new char[30]();
返回本地数组时,p的作用域将被删除,添加
p[4]=0代码>很难从代码中分辨出来。添加额外信息。名字和姓氏在哪里?此外,还需要填充以null结尾的字符。此外,在C++中不能返回C样式数组。当返回本地数组时,在p(4)的WorkDe范围中添加“\\ 0”将被添加<代码> p(4)=0;代码>很难从代码中分辨出来。添加额外信息。名字和姓氏在哪里?此外,还需要填充以null结尾的字符。此外,在C++中不能返回C样式数组。在P(4)中添加“0”