[i]は

2012-04-24 11 views
0

ポインタ対*(ポインタ+ i)を使用すると、誰かがこのコード[i]は

// Option 1 
int **p = new Point*[2]; 
p[1] = new Point; 
p[1]->x = p[1]->x = 1; 

// Option 2 
int **p = new Point*[2]; 
*(p+1) = new Point; 
(*(p+1))->x = (*(p+1))->x = 1; 

を説明していただけますと同じ両方のオプションはありませんか?オプション2を使用して変数を作成すると、オプション1で値を書き込むことができません(私は乱数(アドレス番号?)を取得しました)?違いはありますか?

+10

yする必要があります。 2番目の例は決してyを初期化しません。 –

+2

さて、あなたはオプション2の何にもyを代入しません - あなたはxを2回使います。 –

+1

ああ、私は今あなたの例を編集して、両方のオプションに同じエラーがあるように見えます。 –

答えて

1

あなたはタイプミスがあります:(*(p+1))->x = (*(p+1))->x = 1;を - はい、違いがあります第二項

+0

申し訳ありませんが、あなたが書いたとおりに "x"を付けてください。私はプロジェクトを書いていて、printf( "%f!=%f"、p [1]、*(p + 1))上に異なる出力を得ました。 – Buksy

+0

@Buksyなぜあなたは%fを使用していますか? %fは構造体へのポインタではなく、doubleを求めます。 _もちろん、2つの異なる値を表示します! –

関連する問題