C指向结构的双指针

lin*_*sek 23 c struct pointers data-structures

我试图找出一个指向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);
}
Run Code Online (Sandbox Code Playgroud)

这里问了一个类似的问题:如何在C中使用指向结构指针的指针?关于如何通过双指针修改结构的成员.解决方案是(*data)->member = 1;有意义的语法.但在我的小应用程序中,我在执行该行时收到了seg错误.我究竟做错了什么?

谢谢

DwB*_*DwB 20

如果要取消引用指针,则需要指向某些内容.试试这个:

void main(int argc, char *argv)
{
    mystruct actualThing;
    mystruct *pointer = &actualThing;
    mystruct **data = &pointer;
    myfunc(data);

    printf("Member: %d", (*data)->member);
}
Run Code Online (Sandbox Code Playgroud)


Ray*_*oal 7

您收到了段错误,因为您没有分配结构.

data是垃圾,因此它指向内存中某些不属于您的进程的地方,或者是无法访问的.

您需要先分配一个类型的对象mystruct.以下是您的工作示例:http://ideone.com/XIdJ8


gsp*_*spr 5

data未初始化,因此不指向任何合理的内存地址.此外,没有任何mystruct结构浮动,所以甚至没有任何明智的数据指向.对于您的示例,您希望:

  1. 创建一个mystruct.
  2. 指向它.
  3. 指向该指针.