字符指针导致输出错误

Asi*_*aza 2 c++ char

我有关于char ptr输出的问题.以下是我试图执行的示例代码..

struct DeviceInfo{

char * name;
int id;

};
void testFunc(DeviceInfo *info){

    char temp[50] = "test input";
    info->name = temp;

}
void main(){

    DeviceInfo deviceInfo;
    testFunc(&deviceInfo);
    std::cout<<"Output is "<<deviceInfo.name;


}
Run Code Online (Sandbox Code Playgroud)

输入我得到的主要是某种奇怪的....在调试时我发现当"test.name"传递给输出流时,它不仅提供垃圾输出,而且还改变了"名称"值"deviceInfo"对象为该垃圾值...这是一种测试场景,但在实际应用中,这个testFunc必须以相同的方式执行,即常量char字符串应该被赋予char ptr的名称.

我试着把'\ 0'放在char temp的末尾,就像这个temp [strlen(temp)] ='\ 0';

但它仍然无法正常工作

任何帮助表示赞赏......

拉扎

mwi*_*ahl 5

这是失败的,因为您要将指向自动变量的指针分配给具有不同范围(因此具有不同生命周期)的结构的成员. temp将在最后被摧毁testFunc,进一步访问它是非法的.