如何在其他函数中更新void **的值,并将其保存到另一个函数中?

时间:2018-12-12 09:09:11

标签: c++11 pointers reference

如果我有这样的代码,例如:

public function export() {
    $data['stok'] = Stokbarang::with('products')->get();
    $tgl = thisDay();
    return Excel::create('Stok'.$tgl, function($excel) use ($index) {
        $excel->sheet('New sheet', function($sheet) use ($data) {
            $sheet->loadView('panel.stok.excel',$data);
        });
    })->export('xls');
}

上面的代码显示11,但是我想更新z的值(其地址)以指向一个位置,所以我可以打印5(我的意思是更新它)。我应该怎么做,当我将z发送给函数并返回main时,我可以收到5而不是11。

我只是对指针不好。

编辑:我必须发送以与#include <iostream> using namespace std; void swap(void** a) { int tmp = 5; void* b = &tmp; a = &b; } int main() { int x=11; void* y=&x; void** z=&y; swap(z); void* a = *z; cout << *(int*)a << endl; return 0; } 交换参数

1 个答案:

答案 0 :(得分:1)

您无法通过将void**的值(即它指向的内容)传递给采用void**的函数来更新它。那只能修改指向的内存,而不能修改传递给函数的指针指向的地址。

要更新其指向的内容,该参数应为void**&void***

无论选择哪种解决方案,发布的代码都极易出错且难以维护。您应该完全避免。

另外,请注意,&tmp会在您退出函数时失效,因为局部变量tmp被销毁了。