我对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;


}

我主要得到的输出是某种奇怪的....
在调试时,我发现当“test.name”传递到输出流时,它不仅
给出垃圾输出,但也会将“deviceInfo”对象的“名称”值更改为该垃圾值...
这是一种测试场景,但在实际应用中,必须以相同的方式执行testFunc,即应将恒定的char字符串分配给char ptr的名称。

我试图像这样temp [strlen(temp)] ='\ 0'在字符温度的末尾放置'\ 0';

但它仍然不起作用

任何帮助表示赞赏...

拉扎

最佳答案

之所以失败,是因为您正在将指向自动变量的指针分配给具有不同范围(因此具有不同生命周期)的结构的成员。 temp将在testFunc的结尾处被销毁,并且进一步对其进行访问是非法的。

07-24 09:25