swiftからC言語の関数を使用するときに、ポインタ型の引数、戻り値がある場合、
インターフェイスは、有値オプショナル型となっていますが、なぜでしょうか?

例えば、次の関数のようなことです。

func time(_: UnsafeMutablePointer<time_t>!) -> time_t
func localtime_r(_: UNsafePointer<time_t>!, _: UnsafeMutablePointer<tm>!)->UnsafeMutablePointer<tm>!

例えば、time関数は、引き数にnilを与えることができます。
オプショナル型なので当たり前ですが。。。
だったら、標準のオプショナル型の方が理屈に合いそうです。

var current = time(nil)

また、localtime_r関数の戻り値は、有値オプショナル型ですが、
受け側としては、標準的なオプショナル型または、非オプショナル型で受けれると思いますが、
有値オプショナル型が戻り値なので、非オプショナル型で受け取っても安全だと言いたいのでしょうか。それだと、time関数の引数はの意味は???

なぜ、C言語関数のポインタに対する型が、標準のオプショナル型が使用されないのかを教えてください。