関数とは、ひとまとまりの処理を行うプログラムの単位のことです。関数は、一般的に、

関数名(引数,引数・・・)

のように書きます。引数(argument)は処理するために関数に渡すデータのことです。処理された結果として返す値のことを戻り値(return value)といい、その値の型を関数の型といいます。

関数には標準関数(Standard functions)とユーザ定義関数(User-defined functions)があります。標準関数はCコンパイラに始めから用意されている関数、ユーザ定義関数は自分で作って使う関数です。


ユーザ関数を使うときの流れをみてみます。

#includeなど
ユーザ関数のプロトタイプ宣言
main関数
ユーザ関数の本体

プロトタイプ宣言は、

関数の型 関数名(引数の型 引数名, 引数の型 引数名・・・・)

のように書きます。引数名は後から実際に使う名前と異なっていてもよく、また省略することもできます。

ユーザ関数の本体は、

関数の型 関数名(引数の型 引数名,引数の型 引数名・・・・){
    
}

のように書きます。ここではプロトタイプ宣言のように引数名は省略きません。


[References]
例題で学ぶはじめてのC言語/大石 弥幸
(P.99-102,106-108)


にほんブログ村 資格ブログ IT系資格へ
にほんブログ村
人気ブログランキングへ
32ビットのIPv4アドレスはネットワークアドレスとホストアドレスに分けられています。この割り当てに、アドレスクラスというものが定義されています。
クラスA…ネットワークアドレス8ビット、ホストアドレス24ビット
クラスB…ネットワークアドレス16ビット、ホストアドレス16ビット
クラスC…ネットワークアドレス24ビット、ホストアドレス8ビット

同じネットワークに接続できるノードの数は2の「ホストアドレスのビット」乗マイナス2個となります。したがって、ホストアドレスの大きいクラスAやBではたくさんのノードを接続できますが、接続せずに無駄になってしまうIPアドレスも多くなります。

そこで、ネットワークを分割(サブネット化)することで、限られたIPアドレスを有効活用する方法があります。サブネット化は、ホストアドレス部のビットを借りてネットワークアドレス部のビットを増やします。こうすると、クラスAやBで定義されたビット数と変わってしまうので、どこまでがネットワークアドレス部かを分かるようにします。このとき使うのがサブネットマスクです。

サブネットマスクは、ネットワークアドレス部を1、ホストアドレス部を0で表現します。
11111111 11111111 11111111 00000000/24というように表現します。


[関連問題]
平成13秋問61、平成17春問35、平成19秋問54、平成20春問53

[References]
平成22年度 イメージ&クレバー方式でよくわかる 栢木先生の基本情報技術者教室/栢木 厚
(P310-315)


にほんブログ村 資格ブログ IT系資格へ
にほんブログ村
人気ブログランキングへ
int rand(void)
この関数は0以上RAND_MAX以下のひとつの整数を返します。
RAND_MAXはstdlib.hの中で大抵の場合、
#define RAND_MAX 0x7FFF
と定義されています。0x7FFFは10進数で32767です。

しかし、乱数と言ってもこの関数だけだと、計算する元の数(種)が同じなので、毎回同じ数列しか発生しない。そこで、randの種を変える関数があります。
void srand(unsigned int seed)
この関数によって、randの種がseedになります。

これだけでも、seedの値が毎回同じだと、出てくる数列が同じになってしまいます。そこで、よく使われるのが、
srand((unsigned int)time(NULL));
という書き方です。time(NULL)は、1970年1月1日からの経過秒を返す関数です。seedにtime(NULL)を入れることで、実行した時間によって常に違う種を与えることができるようになりました。

※(unsigned int)というのは、time関数が返す値を強制的にunsigned int型に変えるキャストというものです。


[References]
例題で学ぶはじめてのC言語/大石 弥幸
(P.150-152,158-160)


にほんブログ村 資格ブログ IT系資格へ
にほんブログ村
人気ブログランキングへ