回答編集履歴
2
変更
answer
CHANGED
@@ -42,7 +42,8 @@
|
|
42
42
|
|
43
43
|
> ここの部分がわからないです。なぜp=a; (p+1)=&a[1]; (p+2)=&a[2]; (p+3)=&a[3]ではないのですか?
|
44
44
|
|
45
|
-
A *p[4];の意味は、構造体を指す事ができるポインターが4個格納できるエリアとして定義します。
|
45
|
+
A *p[4];の意味は、構造体を指す事ができるポインターが4個格納できるエリアとして定義しています。
|
46
46
|
定義はしましたが、中のアドレスは空っぽなので構造体のアドレスを入れています。
|
47
47
|
ポインタ配列へのアドレス代入なので、p[0]=&a[0]; p[1]=&a[1]; p[2]=&a[2]; p[3]=&a[3]; と書く事ができます。
|
48
48
|
配列要素のp[1]は、*(p+1)とも書くことができます。(p+1)は、配列の2番目のアドレスなので変更は不可です。
|
49
|
+
例)printf("%d %d %d\n", (*p[1]).x, (*p[1]).y, (*(p+1))->x);
|
1
追加
answer
CHANGED
@@ -38,4 +38,11 @@
|
|
38
38
|
```
|
39
39
|
> ex3)A B[4];
|
40
40
|
|
41
|
-
上記の様に(*p[1]).x, (*p[1]).yと表す事ができます。
|
41
|
+
上記の様に(*p[1]).x, (*p[1]).yと表す事ができます。
|
42
|
+
|
43
|
+
> ここの部分がわからないです。なぜp=a; (p+1)=&a[1]; (p+2)=&a[2]; (p+3)=&a[3]ではないのですか?
|
44
|
+
|
45
|
+
A *p[4];の意味は、構造体を指す事ができるポインターが4個格納できるエリアとして定義します。
|
46
|
+
定義はしましたが、中のアドレスは空っぽなので構造体のアドレスを入れています。
|
47
|
+
ポインタ配列へのアドレス代入なので、p[0]=&a[0]; p[1]=&a[1]; p[2]=&a[2]; p[3]=&a[3]; と書く事ができます。
|
48
|
+
配列要素のp[1]は、*(p+1)とも書くことができます。(p+1)は、配列の2番目のアドレスなので変更は不可です。
|