回答編集履歴

2

変更

2017/01/13 09:47

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -86,7 +86,7 @@
86
86
 
87
87
 
88
88
 
89
- A *p[4];の意味は、構造体を指す事ができるポインターが4個格納できるエリアとして定義します。
89
+ A *p[4];の意味は、構造体を指す事ができるポインターが4個格納できるエリアとして定義しています。
90
90
 
91
91
  定義はしましたが、中のアドレスは空っぽなので構造体のアドレスを入れています。
92
92
 
@@ -94,4 +94,6 @@
94
94
 
95
95
  配列要素のp[1]は、*(p+1)とも書くことができます。(p+1)は、配列の2番目のアドレスなので変更は不可です。
96
96
 
97
+ 例)printf("%d %d %d\n", (*p[1]).x, (*p[1]).y, (*(p+1))->x);
97
98
 
99
+

1

追加

2017/01/13 09:47

投稿

A.Ichi
A.Ichi

スコア4070

test CHANGED
@@ -79,3 +79,19 @@
79
79
 
80
80
 
81
81
  上記の様に(*p[1]).x, (*p[1]).yと表す事ができます。
82
+
83
+
84
+
85
+ > ここの部分がわからないです。なぜp=a; (p+1)=&a[1]; (p+2)=&a[2]; (p+3)=&a[3]ではないのですか?
86
+
87
+
88
+
89
+ A *p[4];の意味は、構造体を指す事ができるポインターが4個格納できるエリアとして定義します。
90
+
91
+ 定義はしましたが、中のアドレスは空っぽなので構造体のアドレスを入れています。
92
+
93
+ ポインタ配列へのアドレス代入なので、p[0]=&a[0]; p[1]=&a[1]; p[2]=&a[2]; p[3]=&a[3]; と書く事ができます。
94
+
95
+ 配列要素のp[1]は、*(p+1)とも書くことができます。(p+1)は、配列の2番目のアドレスなので変更は不可です。
96
+
97
+