gpt4 book ai didi

c++ - 具有两个间接运算符(C++)的函数参数的用途

转载 作者:行者123 更新时间:2023-12-02 10:21:07 25 4
gpt4 key购买 nike

具有两个间接操作符的函数参数的目的是什么?
由于通过引用进行的调用正在更改原始变量的值,因此我认为具有两个间接操作符的函数参数可能会更改原始值的地址。
但是,如下所示,我的尝试并没有:


void addrchanger(int**);

int main()
{
int value1 = 4;
int* value1ptr = &value1;
std::cout<<&value1<<std::endl;

addrchanger(&value1ptr);
std::cout<<&value1<<std::endl;
//the address of value1 doesn't change.
}

void addrchanger(int** foo)
{
//this is an attempt to change the address of value1 to the next slot
++**foo;
}

最佳答案

目的是传递指向一个或多个指针的指针或指向一个或多个数组的指针。对于诸如main()char** argv之类的历史函数,这种做法类似于C(这就是为什么您还想要一个argc的原因,因为不能通过指针来推断其大小)。当您想返回一个指针时,也可以使用它,因此您可以像许多Win32函数一样将指针传递给指针。

例如在StringFromIID

HRESULT StringFromIID(
REFIID rclsid,
LPOLESTR *lplpsz
);

您将传递一个双指针作为第二个参数(一个 wchar_t**),以便返回一个指针,必须像文档所说的那样将它们释放。

如今,在C++中完全避免这种情况,并在必要的深度使用std::vector。

关于c++ - 具有两个间接运算符(C++)的函数参数的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60124996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com