C++ 使用new命令实例化后显示垃圾的char数组

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; } 数组的元素在创建时是未初始化的,因此在您的例

我尝试将以下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;
}

数组的元素在创建时是未初始化的,因此在您的例子中,所有超过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”