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

回答編集履歴

1

修正

2019/10/06 23:18

投稿

Zuishin
Zuishin

スコア28675

answer CHANGED
@@ -1,4 +1,4 @@
1
- 不正確ですが、オブジェクト指向でたとえるなら、型がクラスで変数がインスタンスです。分かれていなければ不便です。インスタンスが無ければ変数は設定できません。
1
+ 不正確ですが、オブジェクト指向でたとえるなら、型がクラスで変数がインスタンスです。分かれていなければ不便です。インスタンスが無ければスタンス変数は設定できません。
2
2
 
3
3
  ```C
4
4
  #include <stdio.h>
@@ -33,6 +33,8 @@
33
33
  }
34
34
  ```
35
35
 
36
- この場合、Person が構造体の定義で、alice や bob が構造体変数です。`Person alice;` と宣言してメモリを割り当てています。メモリを割り当ててはじめて name や age を設定することができます。
36
+ この場合、Person が構造体の定義で、alice や bob が構造体変数です。`struct Person alice;` と宣言してメモリを割り当てています。メモリを割り当ててはじめて name や age を設定することができます。
37
37
 
38
- なぜ定義と宣言が分かれているかという質問ですが、分かれているからこそ alice と bob を同じ手続きで作れ、同じ関数で表示できるのです。
38
+ なぜ定義と宣言が分かれているかという質問ですが、分かれているからこそ alice と bob を同じ手続きで作れ、同じ関数で表示できるのです。
39
+
40
+ そして構造体変数がないとメンバ変数が操作できないのは、定義だけでメモリが割り当てられていないからです。