1

私は C++ プロジェクトに取り組んでおり、少しのサニティ チェックとヘルプが必要です。配列内のメモリ位置への void* ポインターを返したい (これは、

void* ポインター = (void*) (配列 + インデックス);
)。配列は文字であるため、インデックス付け/バイト番号付けはうまく機能します。

ただし、コード内のいくつかの条件への応答として、この場所が指すメモリ (配列内の別の場所) を後で変更できるようにしたいと考えています。これを行う方法はありますか?私は void** ポインターをいじっていて、ポインターを格納したメモリ内の場所への参照を返そうとしているので、ポインター自体が格納されているメモリを変更し、読み取られるポインターを変更するだけです。ただし、これを行うための構文に問題があり、それが可能かどうかは完全にはわかりません。

私はかなり厳格な制約の中で作業しており、void* ポインターを返さなければならないという事実を回避することはできません。

どんな助けでも大歓迎です!

4

2 に答える 2

1

ポインターを再割り当てするだけです。

char array[1200];

void * p = array + 17;

// later:

p = array + 29;

(オブジェクト ポインターは暗黙的に void ポインターに変換できるため、キャストは必要ありません。)

于 2013-05-19T23:44:42.287 に答える
0

別の場所を指すには、ポインターを char* にキャストし直して、ポインター演算を実行するだけです。

char *ptr_tmp = (char*)pointer;

ptr_tmp += 100;

pointer = (void*)ptr_tmp;

これは私があなたの問題を理解したものです?!

于 2013-05-19T23:44:52.467 に答える