私はCプログラムで奇妙な振る舞いをしています。foo.cというファイルで、次のシグネチャを持つ関数にいくつかの引数を渡します。
foo (char *first, size_t a, size_t b, size_t c, char *last);
ここで、foo.hを含む別のCファイルからこの関数を呼び出すと、たとえば次のようになります。
foo("first value", 1, 2, 3, "last value");
fooでは、最初にa、b、cが正しいですが、最後は常にNULLです。最後のパラメーターとして使用するタイプの種類や、この関数をどこから呼び出すかは関係ありません(以前の操作がなくてもmainで直接使用する場合でも)。ファイルはコンパイルされ、1つの実行可能ファイルにリンクされます。foo()を、それが呼び出された場所から同じソースファイルに入れると、すべてが機能します。
関数が外部委託されたときに最後のパラメーターがNULLである理由は何でしょうか?