programing

C로 시간(NULL)은 무엇입니까?

prostudy 2022. 7. 31. 21:12
반응형

C로 시간(NULL)은 무엇입니까?

나는 몇 가지 기본적인 C 기능에 대해 배웠고, 만났다.time(NULL)설명서에 기재되어 있습니다.

이게 정확히 무슨 뜻이죠?

에 포인터를 전달할 수 있습니다.time_t을 반대하다time는 현재 시간으로 채워집니다(반환값은 지정한 값과 동일합니다).합격하면NULL, 그것은 그것을 무시하고 단지 새로운 것을 반환한다.time_t현재 시간을 나타내는 객체입니다.

문의처time(NULL)는 현재 캘린더 시각(1970년 1월1일 이후 초)을 반환합니다.상세한 것에 대하여는, 레퍼런스를 참조해 주세요.일반적으로 포인터를 전달하면time_t variable. 이 포인터 변수는 현재 시간을 가리킵니다.

time()아주 아주 오래된 기능입니다.C언어가 활자조차 없던 시절로 거슬러 올라간다.long옛날에는 32비트 타입을 얻는 유일한 방법은 2개의 배열을 사용하는 것이었습니다.ints - 그때가int는 16비트입니다.

그래서 전화했구나

int now[2];
time(now);

32비트의 시간을 채우고now[0]그리고.now[1], 한 번에 16비트.(이것은, 다음과 같은 다른 시간 관련 함수의 이유를 설명합니다.localtime그리고.ctime는 포인터를 통해서도 시간 인수를 받아들이는 경향이 있습니다.)

나중에 dmr은 추가 작업을 완료했습니다.long컴파일러에게 전달하면 이렇게 말할 수 있습니다.

long now;
time(&now);

나중에 누군가 깨달은 게 있는데time()포인터를 사용하여 값을 입력하는 것이 아니라 값을 반환합니다.단, 하위 호환성은 뛰어난 기능입니다.아직도 동작하고 있는 모든 코드를 이용할 수 있습니다.time(&now),그time()함수가 포인터 인수를 계속 지원해야 했습니다.따라서 반환값을 사용할 경우 포인터로 NULL을 전달해야 합니다.

long now = time(NULL);

(나중에, 물론, 우리는 여전히,time_t평범하지 않고long를 들어 64비트 타입으로 변경하여 y2.038k 문제를 회피할 수 있습니다.)

[P.S. 사실 잘 모르겠어요]int [2]로.long반환값을 추가하기 위한 변경은 다른 시간에 이루어졌습니다.이러한 변경은 동시에 이루어졌을 수도 있습니다.그러나 시간을 배열로 표시할 때는 포인터를 통해 입력해야 하므로 C 함수는 배열을 반환할 수 없기 때문에 값으로 반환할 수 없습니다.]

time는 현재 예: 현재 시간time_t시스템에서는 1일 )의 어느, Unix 1970년 1월 1일 0시 이후)가합니다.time_t이치노 ★★NULL가 원인이 time시간을 일반 반환값으로 반환하지만 다른 곳에 저장하지 않습니다.

Time: )을

ctime은 설명서를 참조해야 합니다. time는 타입의 입니다.time_t *(에 포인터time_tobject)및 timeobject)를 합니다.포인터를 , 「이 포인터」를 건네줄 수도 있습니다.NULL신t_ time_t __ __ ___

int main (void)
{   
    //print time in seconds from 1 Jan 1970 using c   
    float n = time(NULL);   
    printf("%.2f\n" , n);      
}      

1481986944.00 이 인쇄됩니다.

.time_t in you반반 재재반반반 NULL 그냥 됩니다.time_t현재 시간을 나타내는 객체입니다.

Nb:time(&timer); timer = time(NULL);

언급URL : https://stackoverflow.com/questions/7550269/what-is-timenull-in-c

반응형