2011-01-14 14 views
4

はなぜtime機能は通常、このように使用されます。これに代えて時間の関数構文

time_t currentTime; 
currentTime = time(NULL); 

を:

time_t currentTime; 
time(&currentTime); 

第1の方法は、よりちょうどそれは間違いなく、より読みやすいので、使用していますか?それとも別の理由がありますか?

ありがとうございました。

編集:また、なぜtime関数もこのように設計されましたか?なぜ変数を設定するには2つの方法がありますか?

+0

2番目の例は 'time(&currentTime);' –

+0

@ Steve Rightです。私はそれを修正します。 –

+3

あなたの編集のデザインの質問はもっと面白い質問だと思います。実際の根拠があるのですか、それともちょっとした事故ですか? –

答えて

6

変更されたパラメータを渡すよりも、常に関数から値を返すほうが意味があるようです。

これは、関数とサブルーチンが異なる言語で学んだことがあるためかもしれませんが、今日のこれらの若者についてはわかりません。

+0

**不変** ** –

+0

@Matt何ですか?あなたは精緻化できますか? –

+0

@Jay - In。 Pythonの値(数値の)は不変で、 'def f(i):return i + 1' /' i = 0; i = f(i) 'は動作するが、def g(i):i + = 1' /' i = 0; f(i) 'はしません(実際には私がそれを動作させるために考えることができる本当に良い方法はありません)。 –

-1

timerパラメータは、時間値が格納されているtime_t型のオブジェクトへのポインタです。 代わりに、このパラメータはNULLポインタにすることができます。この場合、パラメータは使用されませんが、関数によってtime_tオブジェクトが返されます。

したがって、time_tオブジェクトを作成する必要はありません。

+1

私は 'time'関数がどのように動作するかを知っています、それは疑問ではありません。あなたの最後の文までは、前の行に 'time_t'オブジェクトを作成する必要はないということですか?まだ 'time_t'オブジェクトを作成しなければならないので... –

+0

最初のコードブロックに' time_t currentTime; 'という不要な行があります。とにかく 'time(NULL)'関数はtime_tオブジェクトを作成しますので、自分で作成する必要はありません(使用しないでください)。編集:タイマのパラメータは、時間機能の唯一のパラメータです –

+1

ハァッ?何を言っている? –

1

もちろん、K & Rは本当の答えを知っているかもしれませんが、私の容疑者はそれが歴史的な実装の理由から単なる「事件」です。たとえば、として開始されたこの関数の設計は、プレアンシCの形式ではtime_tの値を返すことができず、後で値を返す関数でしか展開できなかった可能性があります。

これが説明であれば、とにかくパラメータを保持する理由はもちろん、既存のコードとの下位互換性です。

1

最も一般的な形式は、これが短く、初期化されていないcurrentTime変数を残さない、実際にtime_t currentTime = time(NULL);

です。このパラメータは歴史的な事故であり、何の役にも立たない。