V-Mor Asked:2020-08-15 21:59:39 +0000 UTC2020-08-15 21:59:39 +0000 UTC 2020-08-15 21:59:39 +0000 UTC 为什么 C/C++ time() 函数需要一个参数? 772 正如我在cppstudio上所读到的,time()当给定一个不等于 的参数时,一个函数NULL会返回该参数所指向的相同值。 问题:这个函数的参数有什么意义,如果它实际上是用它执行指针解引用?我相信这里有一个隐藏的含义,但现在我认为让这个函数不带参数会更好,这样它就可以简单地返回当前时间值。说服我向它传递一个参数而不是NULL无用的(毕竟,您可以简单地用 取消引用指针*)。 c++ 3 个回答 Voted Inquisitions 2020-08-15T22:32:35Z2020-08-15T22:32:35Z 很可能是因为这是一个C语言的函数,它有返回函数错误码的原理。如果失败,它将返回 -1,如果您需要检查,则只需执行以下操作: time_t __val; if (time(&__val) == -1) { perror ("Time error"); } avp 2020-08-16T05:24:40Z2020-08-16T05:24:40Z time_t time(time_t *tloc) 函数返回以秒为单位的时间(自 1970 年 1 月 1 日起经过),并将其放在内存中传递给它的指针(内存地址)处。 现在关于它的界面(为什么会这样)。简而言之,当然,这是 Unix 第一个版本的旧遗产。 它的接口大体上与过时的函数int ftime(struct timeb *tp)的接口相同,填充如下结构: struct timeb { time_t time; unsigned short millitm; short timezone; short dstflag; }; 并返回 0 表示调用成功,返回 -1 表示错误 (顺便说一下,在程序仍在使用 时ftime(),该函数time()以 32 位类型返回时间,long当时time_t没有类型)。 在第一本广泛分发的手册中,Stephen R. Bourne。Unix系统说这time()是ftime()一个通用函数的两个入口点,这解释了它们接口的相似性。 这就是系统发展的历史。 Best Answer isnullxbh 2020-08-16T03:20:54Z2020-08-16T03:20:54Z 正如我在 cppstudio 上所读到的,当给定一个非空参数时,time() 函数返回参数指向的相同值。 它不会返回相同的值。下面是时间函数的 POSIX 实现: time_t time (time_t *t) { struct timeval tv; time_t result; if (__gettimeofday (&tv, (struct timezone *) NULL)) result = (time_t) -1; else result = (time_t) tv.tv_sec; if (t != NULL) *t = result; return result; } 如您所见,它不会返回相同的值 - 它会复制结果。 问题:这个函数的参数是什么意思 也许在第一个 Unix 实现中,这个函数在成功和errno错误时返回 X。
很可能是因为这是一个C语言的函数,它有返回函数错误码的原理。如果失败,它将返回 -1,如果您需要检查,则只需执行以下操作:
time_t time(time_t *tloc) 函数返回以秒为单位的时间(自 1970 年 1 月 1 日起经过),并将其放在内存中传递给它的指针(内存地址)处。
现在关于它的界面(为什么会这样)。简而言之,当然,这是 Unix 第一个版本的旧遗产。
它的接口大体上与过时的函数int ftime(struct timeb *tp)的接口相同,填充如下结构:
并返回 0 表示调用成功,返回 -1 表示错误
(顺便说一下,在程序仍在使用 时
ftime(),该函数time()以 32 位类型返回时间,long当时time_t没有类型)。在第一本广泛分发的手册中,Stephen R. Bourne。Unix系统说这
time()是ftime()一个通用函数的两个入口点,这解释了它们接口的相似性。这就是系统发展的历史。
它不会返回相同的值。下面是时间函数的 POSIX 实现:
如您所见,它不会返回相同的值 - 它会复制结果。
也许在第一个 Unix 实现中,这个函数在成功和
errno错误时返回 X。