【发布时间】:2018-06-27 03:58:33
【问题描述】:
我想了解传递*&p 和*p 之间的区别以及何时使用它们。
说,我有一个像下面这样的初始化函数。
void init(lua_State *L) {
L = luaL_newstate(); //allocate new memory to L
}
如果我在main() 中尝试访问L,它会崩溃。
lua_State *L;
init(L);
do_something(L);//crash
但是,当我将参数类型更改为 lua_State *&L 时,它不再崩溃。
是因为分配新内存改变了指针的值吗?
如果是这样,总是使用*& 而不是* 传递不是更好更安全吗?
这有什么一般规则吗?
【问题讨论】:
-
在这个例子中你传递了
L。你真的是想问参数类型T *p和T *&p的区别吗? -
@juanchopanza yes, it would
-
@RemyLebeau 我让自己被这个令人困惑的标题弄糊涂了,我现在已经修复了。