TaKeZo’s blog

たけぞーのブログです。

関数ポインタの使い方

C言語にはポインタという機能があります。

ポインタ変数はアドレスを格納する変数です。

関数にもアドレスがあるので、関数を指すポインタ変数も作れます。

宣言の仕方は、こんな感じです。

 

int (* pFunc) (int, int);

 

気持ち悪いですね。

でも、C言語の仕様なので仕方ありません。

覚えましょう。

 

関数ポインタは、配列で使うことが多いようです。

関数そのものの配列が作れないので、関数ポインタの配列を作るわけです。

 

関数ポインタを使うことで、積分を計算する関数なんかも作れます。

関数を直接引数にすることはできないので、関数ポインタで関数を渡すわけです。

C言語のソースコードのネストを浅くする方法

C言語を書いていると、多重ループや条件分岐でネストが深くなってしまうことがあります。

コーディング規約で縛られていないのなら、次のような対策は一考の価値があります。

なお、1~3は推奨。4~5は場合によりけりで、特に5は多くの場合非推奨です。

 

1.途中でreturnしてしまう。

 

2.continueをうまく使う。

 

3.複雑な条件分岐を関数化する。

 

4.三項演算子を用いるなどして多重ループを一つのfor文で記述する。

 

5.複雑な条件分岐をif文の条件式にマージする。