微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在C ++中为指针参数分配地址

如何解决在C ++中为指针参数分配地址

我有一个结构,说:

 struct Astruct {
   int a;
   int b;
 }

我有一个该结构的av实例:

private:
  Astruct My_List;

然后我有一个函数想要获取My_List的地址。

public:
  void Get_My_List(Astruct* List) {

    List = &My_List;

  }

但是似乎总是将参数Astruct * List设置为0; 我知道我可能可以创建一个称为Astruct&Get_Address()的函数,但在这种情况下,我想知道为什么我不能在参数中分配地址。我的意思是可以将参数作为引用传递并更改数据。也许当我写这篇文章时,我现在就开始理解问题了……无论如何,可以确定是否可以通过参数更改指针指向的地址?还是可以只更改指针指向的数据?

解决方法

我知道了。是的,这是关于混乱,而不是指针混乱,更像是参数混乱! 所以问题是我认为我可以通过参数“返回”值。我以为是因为我之前创建了使用指针的函数,然后该函数更改了地址指向的数据。是的,它被“设置”为零。我的意思是@john是正确的,代码无法设置它,但是它永远不会改变。因为我传入的值被初始化为零,并且我不能更改参数,所以在本例中为Astruct * List。因此,我传递的指针保持不变。 因此,我要做的就是使函数采用指向指针的指针。

void Get_My_List(Astruct** List) {
  *List = &My_List;
}

然后将地址传递给指针。在那种情况下,我可以更改指针指向的数据,即指针。

谢谢,再见!

,

您可以传递引用指针:

void Get_My_List(Astruct*& List) {
    List = &My_List;
}

并这样称呼它:

AstructHolder obj{};
Astruct* my_ptr{nullptr};
obj.Get_My_List(my_ptr);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。