如果我有这样的代码,例如:
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;
}
交换参数
答案 0 :(得分:1)
您无法通过将void**
的值(即它指向的内容)传递给采用void**
的函数来更新它。那只能修改指向的内存,而不能修改传递给函数的指针指向的地址。
要更新其指向的内容,该参数应为void**&
或void***
。
无论选择哪种解决方案,发布的代码都极易出错且难以维护。您应该完全避免。
另外,请注意,&tmp
会在您退出函数时失效,因为局部变量tmp
被销毁了。