2011-01-14 5 views
4

time 기능은 일반적으로 다음과 같이 사용됩니다 : 대신의시간 함수 구문

time_t currentTime; 
currentTime = time(NULL); 

을 :

time_t currentTime; 
time(&currentTime); 

첫 번째 방법보다 그냥 틀림없이 더 읽을 수 있기 때문에 사용됩니다? 아니면 다른 이유가 있습니까?

감사합니다.

편집 : 또한 time 함수가 이런 식으로 설계된 이유는 무엇입니까? 왜 변수를 설정하는 두 가지 방법이 있습니까?

+0

두 번째 예제는'time (& currentTime); –

+0

@Steve Right이어야합니다. 내가 고칠거야. –

+3

내가 편집 한 디자인 질문이 더 흥미로운 질문이라고 생각합니다. 실제적인 근거가 있습니까? 아니면 그냥 사고입니까? –

답변

6

변경된 매개 변수를 전달하는 것보다 항상 함수에서 값을 반환하는 것이 더 바람직합니다.

이것은 우리가 함수와 서브 루틴이 다른 언어에서 배웠고, 오늘날이 젊은이에 대해 알지 못했기 때문일 수 있습니다.

+0

** 불변의 ** –

+0

@ 매트 뭐? 당신이 정교 할 수 있니? –

+0

@ 제이 - 예 : (숫자의) 값이 불변 인 파이썬,'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이 사실의 답을 알고있을 것입니다. 그러나 용의자는 역사적인 구현 이유 때문에 그저 "사건"이라고 생각합니다. 예를 들어 time_t 값을 반환하는 pre-ansi C 형식의 일부에서는 사용할 수 없었으므로 나중에 값 반환 함수로 진화했기 때문에 void time(time_t*)으로 시작된이 함수의 디자인 일 수 있습니다.

이것이 설명 인 경우 매개 변수를 유지하는 이유는 물론 기존 코드와의 역 호환성입니다.

1

가장 일반적인 형식은이 짧은 실제로 time_t currentTime = time(NULL);

이며, currentTime 변수 초기화를 두지 않습니다. 매개 변수는 역사적인 사고로 사용하지 않습니다.