1902年（明治35年）1月26日、三条市で6人兄弟の長男として生まれた。2013年（平成25年）6月12日、男性世界史上最高齢として認定されていた木村次郎右衛門が116歳54日で亡くなり、111歳137日の五十嵐が存命中の日本の男性最高齢と認定された。世界でもサルスティアーノ・サンチェスに次いで2番目の高齢の男性であった。135日年上だったジェームズ・マッコーブレーの死去後の18日間は（サルスティアーノ・サンチェスの年齢が正式に確認されていなかったため）、老人学研究団体ジェロントロジー・リサーチ・グループにより一時的に存命中の最高齢の男性と認定されていた。男性日本最長寿になった時点で、子供4人、孫11人、曾孫22人、玄孫1人がいた。男性日本最長寿になった41日後の2013年（平成25年）7月23日午前11時6分、肺炎のため死去。111歳178日だった。これにより男性日本最高齢は110歳168日の百井盛となった。
以下の例では、関数へのポインタとしてfunc_ptrが宣言され、そこへ関数my_functionのアドレスを割り当てている。そしてfunc_ptrを通じて関数を呼び出している。#include <stdio.h>static int my_function(int a) {    printf("my_function: %d\n", a);    return 2 * a + 3;}int main(void) {    int (*func_ptr)(int a) = my_function;    /* あるいは以下でも可能 */    /*    int (*func_ptr)(int) = &my_function;    */    int x;    x = (*func_ptr)(10);    /* あるいは以下でも可能 */    /*    x = func_ptr(10);    */    printf("main: %d\n", x);    return 0;}注1: 関数シンボルf自体は関数型 (function type) であり、関数型は関数ポインタとは異なる。単項のアドレス演算子 (address operator) &を付与した式&fは関数ポインタを返す。しかし、関数型の式fは関数へのポインタに暗黙変換されるため、アドレス演算子を適用せずとも関数へのポインタに代入可能である。注2: 関数へのポインタfpに単項の間接演算子 (indirection operator) *を付与した式*fpは関数指示子 (function designator) となる。(*fp)(arg)という構文は、関数へのポインタfpを通じて関数を呼び出す構文である。しかしCではfp(arg)という構文も認められている。注3: 関数ポインタの宣言における仮引数リストは、型が一致してさえいればいいので、仮引数の名前は省略できる。次の例では、関数へのポインタを引数として他の関数に渡している。ここでは、関数my_functionが、先の例のように関数へのポインタを通じて呼び出される。関数callerは、引数として関数へのポインタと整数値を1つ取る。引数の整数値は、その関数へのポインタを通じて関数を呼び出すときに渡す引数として用いられる。そこで宣言されている関数へのポインタのプロトタイプに適合しさえすれば、callerの第1引数には、どんな関数でも渡すことが可能である。#include <stdio.h>static void my_function(int a) {    printf("my_function: %d\n", a);}static void caller(void (*func_ptr)(int a), int p) {    (*func_ptr)(p);}int main(void) {    caller(my_function, 10);    return 0;}3番目の例でも関数へのポインタを引数として他の関数に渡して用いている。関数fは、指定された区間で積分の近似を計算する関数integへ渡されている。におけるの値を求めるために、f(x)がintegから呼び出されている。integでは、「double型の引数を1つ取り、double型の値を返す関数」でありさえすれば、どんな関数でも計算させることが可能である。なお、関数へのポインタを定義する際には、事前にtypedefを用いて関数型もしくは関数ポインタ型のエイリアスを定義しておくと便利である。#include <stdio.h>#include <math.h>#define PI 3.14159265358979323846typedef double (*fx_ptr_t)(double x);/* あるいは以下でも可能 *//*typedef double fx_t(double x);typedef fx_t* fx_ptr_t;*/double integ(double a, double b, fx_ptr_t fp) {    double  sum = 0.0;    double  x;    int     n;    /* 積分 {a,b} f(x) dx の計算 */    for (n = 0; n <= 100; n++) {        x = (n / 100.0) * (b - a) + a;        sum += (*fp)(x) * (b - a) / (100.0 + 1.0);    }    return sum;}int main(void) {    int i;    struct pair {        fx_ptr_t fp;        const char* name;    } pairs[3] = {        { cos, "cos" },        { sin, "sin" },        { tan, "tan" },    };    printf("From 0 to pi/4:\n");    for (i = 0; i < 3; ++i) {        printf("\t" "Integral of %s = %g\n", pairs[i].name, integ(0, PI/4, pairs[i].fp));    }    return 0;}関数ポインタを引数として渡すことで、処理を外部から組み込む（カスタマイズする）ことが可能である。関数ポインタを受け取って関数を呼び出す側は、その関数内で何が実行されるかを関知する必要がない。引数として渡される関数は、コールバック関数と呼ばれることもある。主にイベント処理や、判断を外部に任せて処理を行なうときなどに用いられる。