#include <stdio.h>
struct student {
int id; /* 学籍番号 */
int eng; /* 英語の成績 */
int math; /* 数学の成績 */
int sci; /* 理科の成績 */
int total; /* 合計点 */
};
void sum1(struct student s) {
s.total = s.eng + s.math + s.sci;
}
void sum2(struct student *p) {
p->total = p->eng + p->math + p->sci;
}
int main() {
struct student s = {17001, 60, 100, 20};
sum1(s); /* 値渡し */
printf("%7d %5d %5d %5d %10d\n", s.
id, s.
eng, s.
math, s.
sci, s.
total);
sum2(&s); /* 参照渡し */
printf("%7d %5d %5d %5d %10d\n", s.
id, s.
eng, s.
math, s.
sci, s.
total);
return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CgpzdHJ1Y3Qgc3R1ZGVudCB7CiAgICBpbnQgaWQ7ICAgIC8qIOWtpuexjeeVquWPtyAqLwogICAgaW50IGVuZzsgICAvKiDoi7Hoqp7jga7miJDnuL4gKi8KICAgIGludCBtYXRoOyAgLyog5pWw5a2m44Gu5oiQ57i+ICovCiAgICBpbnQgc2NpOyAgIC8qIOeQhuenkeOBruaIkOe4viAqLwogICAgaW50IHRvdGFsOyAvKiDlkIjoqIjngrkgKi8KfTsKCnZvaWQgc3VtMShzdHJ1Y3Qgc3R1ZGVudCBzKSB7CiAgICBzLnRvdGFsID0gcy5lbmcgKyBzLm1hdGggKyBzLnNjaTsKfQoKdm9pZCBzdW0yKHN0cnVjdCBzdHVkZW50ICpwKSB7CiAgICBwLT50b3RhbCA9IHAtPmVuZyArIHAtPm1hdGggKyBwLT5zY2k7Cn0KCmludCBtYWluKCkgewogICAgc3RydWN0IHN0dWRlbnQgcyA9IHsxNzAwMSwgNjAsIDEwMCwgMjB9OwoKICAgIHN1bTEocyk7IC8qIOWApOa4oeOBlyAqLwogICAgcHJpbnRmKCIlN2QgJTVkICU1ZCAlNWQgJTEwZFxuIiwgcy5pZCwgcy5lbmcsIHMubWF0aCwgcy5zY2ksIHMudG90YWwpOwoKICAgIHN1bTIoJnMpOyAvKiDlj4LnhafmuKHjgZcgKi8KICAgIHByaW50ZigiJTdkICU1ZCAlNWQgJTVkICUxMGRcbiIsIHMuaWQsIHMuZW5nLCBzLm1hdGgsIHMuc2NpLCBzLnRvdGFsKTsKCiAgICByZXR1cm4gMDsKfQo=