k-tokitoh

2019-04-28

はじめての構造体とか

ロベールのC++教室 第 1 部 68 章くらいまでざざっと。

コンパイル時に色々教えてくれるの、割と性にあっているかもしれない。

int main() {
  printf("%p", main); // => 0x10a23eee0
}
int array[] = {1, 2, 3, 4, 5};
printf("%p", array); // => 0x7ffeeb482a80
printf("%p", &array[0]); // => 0x7ffeeb482a80
int array[] = {10,20,30,40,50};
printf("%d\n", array[3]); // => 40
printf("%d\n", *(array+3)); // => 40
int array[] = {1, 2, 3, 4, 5};
printf("%lu\n", sizeof array); // => 20
printf("%lu\n", sizeof *array); // => 4
printf("%lu\n", sizeof array / sizeof *array); // => 5
struct SStudent {
  char szName[16];
  int nEnglish;
  int nMath;
  int nScience;
};

void Disp(SStudent& student) { // この"&"で参照渡し
  printf("%s\n", student.szName);
  printf("%d\n", student.nMath);
}

int main() {
  SStudent students[] = {
    {"yamada", 67, 49, 84}, // 構造体の初期化子は"{ }"で囲む
    {"tanaka", 90, 65, 69}
  };
  for(int i=0; i<(sizeof students/sizeof *students); i++)
  Disp(students[i]);
}