我正在尝试在C语言中使用双指针来操作结构体,但是无法弄清楚出了什么问题...以下是简单的源代码:
typedef struct
{
int member;
} mystruct;
void myfunc(mystruct **data)
{
(*data)->member = 1;
}
void main(int argc, char *argv[])
{
mystruct **data;
myfunc(data);
printf("member = %d\n", (*data)->member);
}
这里曾经有一个类似的问题: 如何在C语言中使用指向指针的结构体?,它涉及通过双重指针修改结构体成员。解决方案是使用语法
(*data)->member = 1;
,这很有道理。但在我的小应用程序中,执行该行代码时会收到段错误。我做错了什么?谢谢。
myfunc
正在分配mystruct
实例或从列表/队列等中检索它们,那么这是有意义的。但是,如果你仅操作结构体的内容,则没有使用“双重指针”的必要。 - Brian McFarland