c++ - 在结构指针中传递值

标签 c++ c struct

<分区>

我有 5-6 年没有使用 C、C++ 工作了。 但现在我必须做一个非常小的改变(下面解释)。 我尝试阅读教程,但只是感到困惑。

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

定义结构的文件。

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

使用struct变量的文件 //这里我需要创建一个 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;
}

关于c++ - 在结构指针中传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14683102/

相关文章:

c++ - 使用 Boost JSON 解析器的 JSON 格式化错误

c++ - 如何对卡诺图中的单元格进行分类

c - 在 for 循环中使用模数

在 C 中复制结构

c - 如何将字符串加载到结构中?

c++ - vector 中的 Unique_ptr 作为结构的属性

时间:2019-03-08 标签:c++d3dhooking-COMvtable

c++ - FFmpeg 在我的应用程序中禁用 Window 桌面管理器

赢得猜词游戏时无法终止 for 循环

c - 在 Visual Studio 和 Eclipse 中包含 Kiss FFT 库