C双指针结构 [英] C Double Pointer to Structure

查看:184
本文介绍了C双指针结构的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在努力找出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\\\
,(* data) - > member);
}

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



谢谢

解决方案

如果你是去取消引用指针。尝试这样:

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

printf(Member:%d,(* data) - > member);
}


I am trying to work out a double pointer to a structure in C and cannot figure out what is going wrong... The simple source is below:

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);
}

A similar question was asked here: How to work with pointer to pointer to structure in C? on how to modify a member of a structure through a double pointer. The solution was the syntax (*data)->member = 1; which makes sense. But in my little application here, I receive a seg fault when executing that line. What am I doing wrong?

Thanks

解决方案

You need to point to something if you are going to dereference a pointer. Try this:

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

    printf("Member: %d", (*data)->member);
}

这篇关于C双指针结构的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆