関数ポインタについて
C言語によるUNIXシステムにプログラミング入門という本を読みながらC言語を勉強しています。
しかし、サンプルとして提示された下記の内容の意味がわかりません。
分からない箇所が「関数ポインタ」と呼ばれるものがついているということが分かった程度で、どういう意図で記述されているのかがわかりません。
分からないプログラムの処理内容は、ファイル内のデータを16進数で表示するというものです。
分からない箇所を記します。
#include <stdio.h>
#define BUFF 17 /*buffer*/
#define ERR -1 /*system call error*/
void usage(void); /*put usage message*/
char *command_name /*command name*/
FILE *fpin; /*file pointer*/
main(int argc,char *argv[ ]){
char *rindex(const char*s,int c); /*末尾から文字列検索*/
void hexdump(void);
...
...
}
void hexdump(void){
...
...
}
void usage(){
...
...
}
不明なのは、main関数の中の
char *rindex(const char*s,int c); /*末尾から文字列検索*/
void hexdump(void);
です。
Cについて、不明なところが多いので、利用する関数は使う前に宣言しなければいけない程度の理解ですが、そうだとしてもusageメソッドはmain関数の外であるのに、rindexとhexdumpは何故main関数の中で宣言されているのでしょうか。
上記の不明点とは別で、rindexの前にポインタが付いていると思うのですが、hexdumpやusageにはついていません。
知人からは、関数までのポインタを返すとのことでしたが、用途もいまいち理解できません。
全てではなくてもいいので、ヒントをいただけるとうれしいです。
よろしくお願いします。
補足
ない