首页 > 解决方案 > 在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() 或其他东西的函数,但在这种特殊情况下,我想知道为什么我不能在参数中分配地址。我的意思是可以将参数作为引用传递并更改数据。或者当我写这篇文章时,也许我现在开始理解问题了......无论如何,为了确定,是否可以通过参数更改指针指向的地址?或者我可以只更改指针指向的数据吗?

标签: c++pointersargumentsmemory-address

解决方案


我想到了。是的,这是关于混淆,但不是指针混淆,更像是参数混淆!所以问题是我认为我可以通过参数“返回”值。我认为这是因为我之前创建了带有指针的函数,然后该函数更改了地址指向的数据。是的,它被“设置”为零。我的意思是@john 是对的,代码无法设置它,但它永远不会改变。因为我传入的值被初始化为零并且我无法更改参数,在本例中为 Astruct* List。所以我传递的指针保持不变。所以我要做的是让函数接受一个指向指针的指针。

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

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

谢谢再见!


推荐阅读