我对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
的结尾处被销毁,并且进一步对其进行访问是非法的。