編入試験対策のためにC言語に触れてみる

編入試験でC?

工学部情報系の3年次編入での専門科目の問題はほぼほぼC言語を使う問題なので、ソートアルゴリズムの復習も兼ねてC言語に触れて読み書きできるようにせねば…という次第

(https://www.adm.kanazawa-u.ac.jp/south/s_gakusei/pdf/r6/r6_a_subutsu.pdf みたいにFortranが使えるような大学もごく一部あるが)

それにしてもPythonとかJavaを使っている問題が全く見つからなかったんだけど、Cが採用されるのはやっぱり低級言語寄りな言語だからなのだろうか。

Python、Rustの最低限の文法が理解できている前提

試験で使われそう(≒基本的)な型

いくつか編入の過去問を見た感じここらへんが使われそう。intとfloatはPythonのそれとまんま同じだし、charはRustにもあるので大丈夫そう。doubleもRustのf32とf64の関係みたいな感じかな?
voidというのはCとかC#にある、「型がない」ことを示す型だそう。 (Cは関数定義のときに引数と返り値の型指定が必須)
初めて触れた言語がpythonだからかリストとか辞書がないのに軽く衝撃を受けた。

変数定義

型 変数名 = 値;
int a = 1;
int b;

Rustだとこうなる

let a: i32 = 1; 
let b: i32;

関数定義

返り値の型 関数名 (引数1の型 引数1, ..., 引数nの型 引数n) {
    処理内容;
}

int x2(int input) {
    return input * 2;
}

ちなみにC言語はmain関数がないと動いてくれない。このx2関数を動かす場合、

#include <stdio.h>

int x2(int);

int main() {
    int num = 1;
    int result = x2(num);
    printf("%d", result);
    return 0;
}

int x2(int input) {
    return input * 2;
}

このようにしないとエラーが出る。3行目のプロトタイプ宣言という記述があるとmainの前にx2関数の情報が宣言されているので、x2関数が未宣言とエラーが返されずに済む。 あとmain関数で最後にreturn 0;を書くのはシェルにプログラムが正常終了したのを伝えるためみたい。