ポインターが参照によって関数に渡される方法に少し混乱していますか?
たとえば、ここに私が書いたコードがあります(関数全体をコピーしたのではなく、関連する部分だけをコピーしました)
metadata * removeBlock(metadata *first)
{
metadata *temp = first;
if(first == NULL || first -> prev == NULL)
{
first -> in_use = 1;
first = NULL;
return temp;
}
}
私が欲しいのは、関数が戻るときに、渡された元の値を NULL に設定する必要があるということです。関数を呼び出す方法は次のとおりです (このコード行は、ヒープ内の領域からメタデータ構造をプルします。正しく動作します。デバッグして、この後、構造体が実際に有効なメタデータ構造体を指していることを確認しました)
metadata *strct = ((metadata *)ptr - sizeof(metadata));
removeBlock(strct);
ただし、このメソッドが戻った後も、strct は関数に渡す前と同じ値のままです。&strct を渡そうとしましたが、無効なキャスト例外がスローされました。構造体を引数として渡す最良の方法は何ですか?
ありがとうございました。