0

我有 5 到 6 年没有在 C、C++ 领域工作过。但现在我要做一个很小的改变(解释如下)。我尝试阅读教程,但只是感到困惑。

下面我的结构包含 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;

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

请建议。

4

1 回答 1

1

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

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;
}
于 2013-02-04T08:57:07.373 回答