在结构指针中传递值

Value passing in Struct Pointer

本文关键字:结构 指针      更新时间:2023-10-16

我没有在 C 语言工作过,C++ 5-6 年了。但是现在我必须做一个非常小的更改(如下所述)。我尝试阅读教程,但只是感到困惑。

下面我有包含 2 个属性的结构。我需要创建它的引用并将值传递给这两个属性。

在其中定义结构的文件。

//List of includes
typedef struct dscvs {
UPD_TRC(trc_no);
UPD_STS(status);
}dscvs_i;

使用结构变量的文件在这里,我需要创建一个类型为 dscvs_i 的变量,以便我可以在 UPD_TRC(trc_no) 和 UPD_STS(status) 中输入值;这就是我正在做的

dscvs_i *i_updsc;
i_updsc->trc_no = trcno;

但这是抛出错误"错误:表达式必须是可修改的左值"

请指教。

即使它编译了(由于宏将成员包装在结构中,它似乎没有这样做),这:

dscvs_i *i_updsc;
i_updsc->trc_no = trcno;

是无效代码。在分配某些内容之前,您无法修改指针i_updsc指向的内容,即初始化指针以指向您可以修改的有效内存块。

如果您希望使用它,则需要使用以下malloc()分配动态内存:

i_updsc = malloc(sizeof *i_updsc);

然后在尝试修改之前检查分配是否成功:

if(i_updsc != NULL)
{
  i_updsc->trc_no = trcno;
}