次のポインターの問題で立ち往生しています。
関数があるとします:
void Function (unsigned char *ubPointer)
{
ubPointer++;
}
int main (void)
{
unsigned char *PointerX;
Function( PointerX );
}
私が望むのは、グローバル変数として宣言せずに、++ が PointerX に反映されることです。
どうもありがとうございました。
次のポインターの問題で立ち往生しています。
関数があるとします:
void Function (unsigned char *ubPointer)
{
ubPointer++;
}
int main (void)
{
unsigned char *PointerX;
Function( PointerX );
}
私が望むのは、グローバル変数として宣言せずに、++ が PointerX に反映されることです。
どうもありがとうございました。
C++ では、参照によってポインターを渡します(関数の戻り値の型を指定することを忘れないでください)。
void Function (unsigned char*& ubPointer)
// ^
{
ubPointer++;
}
これにより、呼び出しコードをさらに変更する必要はありません。ubPointer
関数から戻ると、呼び出し元に副作用が表示されます。
C では、ポインターにポインターを渡すことで同等の結果を得ることができます。
void Function (unsigned char** ubPointer)
// ^
{
(*ubPointer)++;
// ^^^^^^^^^^^^
}
これには、関数を呼び出す方法を変更する必要があります。
int main()
{
unsigned char* p;
Function(&p);
// ^
}
または、Cスタイルにしたい場合
void Function (unsigned char **ubPointer)
{
(*ubPointer)++;
}
なぜなら
Function (unsigned char **ubPointer)
{
ubPointer++;
}
指すアドレスを増やします。