gpt4 book ai didi

c++ - 字符指针导致错误输出

转载 作者:太空狗 更新时间:2023-10-29 23:24:59 24 4
gpt4 key购买 nike

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

我试过像这样在 char temp 的末尾放置 '\0' temp[strlen(temp)] = '\0';

还是不行

感谢任何帮助...

拉萨

最佳答案

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

关于c++ - 字符指针导致错误输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8973894/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com