【初心者歓迎】C/C++室 Ver.50【環境依存OK】
at TECH
[
2ch
|
▼Menu
]
■コピペモード
□
スレを通常表示
□
オプションモード
□このスレッドのURL
■項目テキスト
600:デフォルトの名無しさん 08/03/09 11:39:46 頭がこんがらがってきたのですが、 クラスmyclassの大きさをnバイトとして、次のように定義すると、 myclass *A; A = new myclass[x]; myclass B[x]; sizeof()の戻り値が n ← sizeof(myclass),sizeof(*A),sizeof(*B) 4 ← sizeof(A) x*n ← sizeof(B) となるわけですが、AとBにはどういう違いがあるんでしょうか 601:デフォルトの名無しさん 08/03/09 11:45:03 配列とポインタの違い。 ちなみにsizeof (*B)は、Bが配列型→ポインタ型への変換を受けた後、 それに単項*演算子を適用しているので、B型のインスタンスをsizeofにかけていることになる。 602:デフォルトの名無しさん 08/03/09 11:56:08 Aはポインタ型(配列の先頭を指す) Bは配列型(値は配列の先頭を指すポインタ) ってことでしょうか 両方A[0].xとかB[1].xでクラスのメンバ変数xにアクセスできるので、 イマイチ区別が付きませんでした 603:デフォルトの名無しさん 08/03/09 12:13:17 配列型のインスタンスは、原則として式の中でその先頭要素を指すポインタに変換される。 (sizeof Bのように直接sizeofの演算対象にするのはその例外の1つ) それで、[]演算子は常にポインタを対象にしている。 このページの中程にそういう話がある。 http://kmaebashi.com/programmer/pointer.html
次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
レスジャンプ
mixiチェック!
Twitterに投稿
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch
5157日前に更新/245 KB
担当:undef