sizeof
を使用してCでポインタのサイズを取得するにはどうすればよいですか?私はポインタを格納するメモリをmallocしたい(値は指さない)。Cのポインタのサイズを取得
答えて
:あなたがいずれかを使用することができます
char *p;
をこれらの式のうち、
sizeof(p)
sizeof(char *)
先頭には、malloc()
cal以下のようなL:ppc
変更の種類は、表現が正しいスペースを割り当てた場合
char **ppc = malloc(sizeof(char *));
char **ppc = malloc(sizeof(p));
char **ppc = malloc(sizeof(*ppc));
は、最後のバージョンはその中にいくつかの利点があります。
最初の式ではかっこは省略可能です。 –
@CarlNorum真実ですが、表現がはっきりとわかります。それはスタイルの問題であり、編集すべきではありません。 –
+1は、最後のバージョンが優先されることを識別します。 –
これはトリックを行う必要があります。
任意のタイプ(私はここchar
を選択したが、それは具体的な例示のためである)を考えると
sizeof(void*)
char *ptr;
char **ptr2 = malloc(sizeof(ptr));
あなたの目的を達成できるはずです。プラットフォームが何であっても、このコードは機能するはずです。
- 1. C#:ソフトリンクファイルのサイズを取得
- 2. C++ - ベクトルへの内部ポインタを取得
- 3. 目的のファイルのサイズを取得-c
- 4. C++ - ポインタの追加や要素サイズで
- 5. Objective-Cのインスタンス変数のクラスへのポインタを取得
- 6. Cの関数の引数のポインタを取得するには?
- 7. ポインタのサイズは?
- 8. C++のベクトルからポインタのベクトルを取得
- 9. C++でファイルの先頭へのポインタを取得する方法
- 10. C++ forstreamのputポインタの生の値の取得(ストレージ用)
- 11. C++ポインタ配列の長さを取得する方法は?
- 12. 大きなファイルのサイズを取得するCのサイズを返す0
- 13. nswindowのサイズを取得
- 14. SQL - データベースのサイズを取得
- 15. python:バッファのサイズを取得
- 16. ポインタからイテレータを取得
- 17. は、charのサイズを取得*配列は、C++の関数
- 18. Cのコマンドライン入力からファイルのサイズを取得
- 19. CでLinuxのFlash ROMのサイズを取得するには?
- 20. C++のウィンドウでハードディスクの合計サイズを取得
- 21. ポインタのアドレスを取得する
- 22. メンバー関数delphiのポインタを取得
- 23. JNIからJava ByteBufferのポインタを取得
- 24. C++マクロで型のサイズを取得する
- 25. C++はEOLのサイズ(バイト単位)を取得します
- 26. C++経由でマイクロSDカードのサイズを取得
- 27. C#:デスクトップの完全なサイズを取得しますか?
- 28. SCSS - イメージの取得サイズ
- 29. ポインタの配列のサイズ
- 30. 固定サイズの配列へのCの既存のポインタ
AFAIK、異なる型へのポインタは、同じサイズを持つことが保証されていません。 – SLaks
本当ですか?あなたは例/ソースを提供できますか?私は常に同じアドレス空間内のメモリ位置を参照しているので、すべてのポインタが同じサイズであると仮定しています。 – Matt
@Matt:簡単な反例は関数ポインタです。必ずしも同じアドレス空間である必要はありません。参照:http://stackoverflow.com/questions/916051/are-there-are-any-platforms-where-pointers-to-different-types-have-different-siz。 –