结构指针中的值传递

时间:2013-02-04 08:43:21

标签: c++ c struct

我从未在C,C ++工作过5到6年。 但现在我做了一个非常小的改变(下面解释)。 我试过阅读教程,但只是感到困惑。

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

定义struct的文件。

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

使用struct变量的文件 //这里我需要创建一个dscvs_i类型的变量,这样我就可以在UPD_TRC(trc_no)&内部输入值了。 UPD_STS(状态); //这就是我正在做的事情

dscvs_i *i_updsc;
i_updsc->trc_no = trcno;

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

请建议。

1 个答案:

答案 0 :(得分: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;
}