gpt4 book ai didi

c++ - 将指针的地址传递给需要指向指针的函数有什么意义?

转载 作者:行者123 更新时间:2023-11-30 03:14:47 27 4
gpt4 key购买 nike

我正在读取一个 example of ffmpeg decoding,它有一个传递给函数的指针的地址:

static AVBufferRef *hw_device_ctx = NULL;


if ((err = av_hwdevice_ctx_create(&hw_device_ctx, type,
NULL, NULL, 0)) < 0) {

将指针的地址作为参数传递有什么意义?

我知道当我们传递指针本身时,如果指针的地址为 0x123456,那么该函数将能够修改该地址中的对象。但是当我传递一个指针的地址时,我传递的是分配这个指针号的地址?

如果我没理解错的话,我传递的是存储 0x123456 的变量的地址?为什么函数需要它?

此外,假设我想像这样将 hw_device_ctx 存储在 unique_ptr 中:

std::unique_ptr<AVBufferRed> hw_pointer;

如何将它传递给 av_hwdevice_ctx_create?因为当我这样做时出现错误

av_hwdevice_ctx_create(&hw_pointer.get(),...

它说:

expression must be an lvalue or a function designator

最佳答案

当你传递一个指针时,你是按值传递指针。因此,您可以修改指针指向的变量,但不能修改指针本身。

如果您需要修改指针本身(例如指向其他地方),您可以通过引用或指向指针的指针来传递它。

unique_ptr 的引用不起作用的原因是因为您正在尝试获取将立即死亡的临时引用。如果该函数接受 const ref,它会起作用,但显然这不是您要实现的目标。

您不应该修改由智能指针管理的指针。您可以在函数调用后将指针传递给智能指针。

关于c++ - 将指针的地址传递给需要指向指针的函数有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57519584/

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