问题描述
struct Astruct {
int a;
int b;
}
private:
Astruct 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);