ポインタの参照渡し

luaの初期化用関数

void init(lua_State *lua)
{
	lua = lua_open();
        .....
}

みたいなのを書いていて当然これだとポインタのコピーが渡されるのでいろいろ不都合(というかエラーで落ちる)なことに。

というわけでまぁ、そこに気づいて

void init(lua_State **lua).....

というコードまで行き着いたわけだけれど、ポインタってアドレスを指し示すint型の変数だから参照でも渡せるよね?って思って調べてみたらちゃんとあった。

void init(lua_State *&lua)
{
	lua = lua_open();
        ......
}

こう書けば前の記述を崩さずに書けるわけだけれど、ちょっと見慣れていないせいで変な感じがする。というか今までポインタはオブジェクトをそのまま渡しているようなイメージだったけれど、よく考えるとポインタのコピーだったわけだ。こういう事の再認識って大事だね