【问题标题】:Pass a dynamic structure by reference? [C]通过引用传递动态结构? [C]
【发布时间】:2010-03-30 15:06:34
【问题描述】:

大编辑:

好的,我最初的问题对我没有帮助。这是第二次尝试。

我的结构如下所示:

struct node {
   char *name;
   int  age;
   struct node *nextName;
   struct node *nextAge;
}; 

我必须用这样的结构制作两个链表。 所以我有'rootAges',它跟踪基于年龄的列表的开始位置和 'rootNames' 跟踪名称的开始位置。我似乎无法让这些更新。

也就是说,我有 struct node *rootAges 和 struct node *rootNames。 我需要将这两个都传递给一个将元素添加到列表中的函数。 但是,当我将内容添加到列表中时,我还需要更改根源。 到目前为止提供的方法,并没有改变 rootAges 的值,例如在 main 函数中,当它在 add 函数中被改变时。

谢谢!

【问题讨论】:

    标签: c data-structures pass-by-reference


    【解决方案1】:

    您将结构实例的地址传递给接受 C 中的指针的函数。

    void fn(struct data *p)
    {
      if(p)
        p->x = 33;
    } 
    
    //... main ...
    struct data d;
    fn(&d);
    //d.x == 33
    

    【讨论】:

      【解决方案2】:

      传递一个指向结构的指针。

      例如:

      typedef struct data{ int x;} s_data;
      
      void foo (s_data* pointer){}
      
      s_data s={0};
      foo(&s);
      

      【讨论】:

        【解决方案3】:

        声明

        void Foo(struct data *);
        

        定义

        void Foo(struct data *p)
        {
        //body
        }
        

        在你的代码中

        Foo(root);
        

        【讨论】:

          猜你喜欢
          • 2013-05-12
          • 2011-02-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-14
          • 2012-01-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多