void配列の束にデータを格納してコピーするためにvoidポインターを使用しています。配列がいっぱいになると、残りのデータを新しい配列に書き込むようにしています。 たとえば、100バイトのvoidポインタがあります。私はすべてを配列に書きたいと思います。配列には50バイトの空き領域しかありませんので、残りの50を空き容量のある別の配列に書きたいと思います。 最初の50バイトを再利用せず、最後の50バイトにアクセスできるように、voidポインターのデータを「索引付け」することはできますか?voidポインターのメモリ部分にアクセスする
答えて
voidポインターだけで留まる、いいえ。
あなたは、配列のインデックスを作成している、のは言わせて:
array[10]
あなたはこのアドレスとして何をそれを逆参照されています。
配列がchar *
の場合、charは完全型なので、問題はありません。コンパイラが各 "case"のサイズを知り、9番目の要素を与える命令(1st(1バイト))をコンパイラが知ることができます。 * arrayまたはarray [0])
ここでvoid *ポインタを使用し、9番目の要素にアクセスしようとします。
コンパイラは、単にそれが指すデータのサイズを知ることはできません。voidは完全な型ではありません。したがって、どのインデックスにもアクセスすることはできません。
したがって、無効なポインタのみを使用することはできません。
しかし、完全な型にするためにあなたのvoidポインタをキャストすることができます。例えば
:
void * destination;
char * array = malloc(sizeof(char) * 512);
destination = array;
((char *)destination)[10] = 'n';
は完全に有効です。
警告:GCC AS ANTENSIONは、voidを指すポインタの算術演算をサポートし、デフォルトでは警告を出さずにサイズ1として扱います。少なくとも-Wpointer-arithでコンパイルしてください。通常は '-Wall -pedantic'が最適です。 –
ありがとう!私はコンテンツにアクセスしたら、それをvoidポインタに変換することも可能だと思います。 (私は実際にはまだ試してみませんでしたが、私は悪い仮定をしないことを願っています) – greenteam
本当に興味深いです、私はその拡張について全く考えていませんでした。それを指摘してくれてありがとう! –
- 1. スマートポインタへのvoidへのポインター
- 2. void(*)()型のポインターをvoidに変換する方法*
- 3. int型のポインターの代わりにvoidポインター
- 4. ポインターのベクトルにアクセスする
- 5. voidポインターを使用するのはいつですか?
- 6. voidポインターに特定のメモリを割り当てても、未定義の動作ですか?
- 7. メモリ最適化テーブル - データをメモリに部分的にロードする
- 8. ポインターのポインタとメモリの割り当て
- 9. voidポインターのデータをファイルに書き込む
- 10. voidポインター引数を持つ関数を使用する
- 11. voidポインターが警告を出すのは普通ですか?
- 12. ポインター・ポインター、ポイント・オブ・ポインテッド・アドレスと2Dアレイ・アクセスの明確さ
- 13. voidポインターを1バイト増加させますか?二人で?
- 14. voidポインターでmemcpyを使用したときのセグメンテーションフォールト - C
- 15. メモリブロックをメモリの別の部分にコピーする
- 16. 初期化ポインターへのポインターへのポインターへのポインターへのポインターのポインタ
- 17. Cのポインター(**ポインター)のポインターの末尾に文字列を追加する方法
- 18. ローカルの部分をループ内で部分的にレンダリングしてアクセスする方法
- 19. PHPの部分アクセス制御
- 20. 他のアプリケーションがルーティング後に自分のアプリケーションの内部メモリを監視/アクセスすることができます
- 21. サードパーティアプリケーションからTablet内部メモリにアクセスする
- 22. C++のポインターによる文字配列へのアクセス
- 23. 角度アクセス、内部成分
- 24. ポインターを使用するとメモリが過剰に使用されますか?
- 25. cポインターのメモリ割り当てへのポインタ
- 26. モデルから個々の項目に部分的にアクセスする
- 27. セロリのタスクの部分的な結果にアクセスする
- 28. 別の部分クラスから文字列のリストにアクセスする
- 29. ashxハンドラ、void内のHttpContext.Currentにアクセス
- 30. RailsでURLのページ名/最終部分にアクセスする
なぜ誰かがこれを投票しましたか? – greenteam