[ create a new paste ] login | about

Link: http://codepad.org/rdEXcqUG    [ raw code | output | fork ]

C++, pasted on Nov 10:
// =============================================================
// ==================== 構造体の考え方一例 =====================
// =============================================================

int main()
{

 // =============================================================
 // シーンその1 ================================================
 // =============================================================

 int x;  // ← この様子を良く観察しておく。int としてメモリ上に配置される
         //   x と名前が付けられた何か  "こういう内容で" "こういう名前"
         //   という構造の変数

 x = 10;
 printf("x = %d です\n", x); // 代入して使ってみる



 // =============================================================
 // シーンその2 ================================================
 // =============================================================

 struct {int a; int b;} y; // ← 上の x と様子を比べてみる。
                           //   上の x は、"int" 型として宣言されているが
                           //   こちらは "struct {int a; int b;}" がカタチとして
                           //   宣言されている。
 y.a = 20;
 y.b = 30;
 printf("yのa = %d, yのb = %d\n", y.a, y.b); // 同じく使ってみる


   /* これは「こんな構造の型ですよ」と、既存の型を組み合わせて作られた物なので
      構造体。 しかしこの書き方では、毎回同じように宣言しないと
      メモリ上のイメージが同じにならないので使いづらい。
      そこで、                                                              */

 struct tAB {int a; int b;} z; // ← "tAB" と言う名前のタグを付けてみたが
 tAB zz;                       // ← そのおかげで、何度も書かかなくても
 tAB zzz;                      //   同じ構造を宣言出来た。

 z.a = 1;
 z.b = 2;
 
 zz.a = 11;
 zz.b = 12;    // ※面倒なので以下略


   /* タグ便利だなww毎回書かなくても、タグ名で同じ構造の宣言使えるのなww
      って、あれ? ならむしろこれ、"型名の"宣言だけ出来たらさらに楽じゃね? */


 struct tCD { int a; int b;}; 

 tCD zzzz;
 tCD zzzzz;

 zzzz.a = 3;
 zzzz.b = 4;   // 面倒なので以下略




 // =============================================================
 // シーンその3 ================================================
 // =============================================================

   /* そして、C/C++言語では括弧の中などが改行されてても構わないので
      折ってみる。 また、宣言は別に関数内に書かなくてもいいので */

 struct tEF {
  int a;
  int b;
 };

 return 0;
}

   /* 外にも置いてみる */

struct tGH {
 int a;
 int b;
};

void foo() {
 tGH x;
 x.a = 5963;
 x.b = 5963;
}


   /* こんな感じ。クラスでも同様。 尚、 */

   typedef struct {
    int a;
    int b;
   } Test;

   /* こんな事書かれてる物も見たことあるかと思うが、この typedef については
    単に「その、変数名にあたる部分を型名(type)に定義(def)するよ」と言うだけ」 */


Output:
1
2
x = 10 です
yのa = 20, yのb = 30


Create a new paste based on this one


Comments: