如何在c语言中正确地更新struct中的这个字段



试图记住在结构体中更新指针的语法。例如,我有这样的东西。

typedef struct {
char *name;
}car;

我有一个函数叫做

void update_Name(car *d, char *newname)
{
car->name = &newname;
}

是正确的还是仅仅是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已经是与d->name类型匹配的char *类型,所以您可以直接分配它。

d->name = newname;

相关内容

  • 没有找到相关文章

最新更新