如何解决如何在 C 中的 struct 中正确更新此字段
试图记住更新结构中指针的语法。 例如,我有这样的东西。
typedef struct {
char *name;
}car;
void update_Name(car *d,char *newname)
{
car->name = &newname;
}
这是正确的还是只是简单的新名称? 非常直截了当,不要担心任何其他需要的语法或函数,只是想直接知道将如何更新。谢谢
解决方法
这不太正确。
您有一个 char *newname
函数参数。您有一个 char *name
结构成员。 &newname
创建一个指向 newname 的指针,即 char **
。不是你想要的。
您只需要 car->name = newname;
将 char*
分配给 char*
。
始终确保以最高警告级别编译您的程序。当您分配不匹配的指针时,它会告诉您。
而且在这样的代码中也要记住内存和指针的生命周期。您正在将指向字符的指针分配到结构中。至少只要您的 car
结构或您的 car->name
将成为指向死内存的“悬空指针”,无论指向什么都需要存活。
首先,car->name
是不正确的,因为 car
是类型的名称,而不是变量。你想要d->name
。
通过该更正,d->name
的类型为 char *
。您正在尝试为其分配类型为 char **
的表达式,但该表达式不匹配。
newname
已经是 char *
类型,它匹配 d->name
的类型,所以你可以直接赋值。
d->name = newname;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。