6

次のポインターの問題で立ち往生しています。

関数があるとします:

void Function (unsigned char *ubPointer)
{
    ubPointer++;
}

int main (void)
{
    unsigned char *PointerX;

    Function( PointerX );
}

私が望むのは、グローバル変数として宣言せずに、++ が PointerX に反映されることです。

どうもありがとうございました。

4

3 に答える 3

16

C++ では、参照によってポインターを渡します(関数の戻り値の型を指定することを忘れないでください)。

void Function (unsigned char*& ubPointer)
//                           ^
{
    ubPointer++;
}

これにより、呼び出しコードをさらに変更する必要はありません。ubPointer関数から戻ると、呼び出し元に副作用が表示されます。

C では、ポインターにポインターを渡すことで同等の結果を得ることができます。

void Function (unsigned char** ubPointer)
//                           ^
{
    (*ubPointer)++;
//  ^^^^^^^^^^^^
}

これには、関数を呼び出す方法を変更する必要があります。

int main()
{
    unsigned char* p;
    Function(&p);
    //       ^
}
于 2013-03-09T21:12:16.733 に答える
0

または、Cスタイルにしたい場合

void Function (unsigned char **ubPointer)
{
    (*ubPointer)++;
}

なぜなら

Function (unsigned char **ubPointer)
{
    ubPointer++;
}

指すアドレスを増やします。

于 2013-03-09T21:14:35.520 に答える