teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

変更

2017/01/13 09:47

投稿

A.Ichi
A.Ichi

スコア4070

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

追加

2017/01/13 09:47

投稿

A.Ichi
A.Ichi

スコア4070

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番目のアドレスなので変更は不可です。