【发布时间】:2011-11-30 02:48:49
【问题描述】:
我正在尝试在 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);
}
这里问了一个类似的问题:How to work with pointer to pointer to structure in C? on how to modify a member of a structure through a double pointer。解决方案是语法(*data)->member = 1;,这是有道理的。但是在我的小应用程序中,执行该行时收到段错误。我究竟做错了什么?
谢谢
【问题讨论】:
-
抛开分配,+1 提出一个很好的问题。
-
通常,使用指向结构指针的指针的唯一原因是函数需要更改指针指向的位置。例如,如果
myfunc正在分配mystruct的实例,或者可能从列表/队列/等中检索它们,这将是有意义的。但是,如果您只是在操作结构的内容,则没有理由使用“双指针”。 -
为了说明这一点,我并不是要创建它。我正在尝试使用 libusb-1.0 创建一个 USB 接口。其中一个库函数需要一个指向结构的双指针作为参数。所以我试图弄清楚我将如何提供它。不过,每个人都对自己的反应死心塌地。谢谢!
标签: c pointers data-structures struct