1、time.h
time.h是C/C++中的日期和时间头文件,定义了四个变量类型、两个宏和各种操作日期和时间的函数。
(1)库变量
size_t 是无符号整数类型,它是 sizeof 关键字的结果。
clock_t 适合存储处理器时间的类型。
time_t is 适合存储日历时间类型。
struct tm用来保存时间和日期的结构。
(2)库宏
NULL:一个空指针常量的值。
CLOCKS_PER_SEC:每秒的处理器时钟个数。
(3)库函数
1、char *asctime (const struct tm *timeptr)
返回一个指向字符串的指针,它代表了结构 timeptr 的日期和时间。
函数功能: 得到机器时间(日期时间转换为ASCII码)
函数返回: 返回的时间字符串格式为:星期,月,日,小时:分:秒,年
2、clock_t clock(void)
返回程序执行起(一般为程序的开头),处理器时钟所使用的时间。
也就是得到从程序启动到此次函数调用时累计的毫秒数。
3、char *ctime (const time_t *timer)
返回一个表示当地时间的字符串,当地时间是基于参数 timer。
函数功能: 得到日历时间
函数返回: 返回字符串格式:星期,月,日,小时:分:秒,年
4、double difftime (time_t time1, time_t time2)
返回 time1 和 time2 之间相差的秒数 (time1-time2)。
函数功能: 得到两次机器时间差,单位为秒
函数返回: 时间差,单位为秒
5、struct tm *gmtime (const time_t *timer)
timer 的值被分解为 tm 结构,并用协调世界时(UTC)也被称为格林尼治标准时间(GMT)表示。
函数功能: 得到以结构tm表示的时间信息
函数返回: 以结构tm表示的时间信息指针
6、struct tm *localtime (const time_t *timer)
timer 的值被分解为 tm 结构,并用本地时区表示。
7、time_t mktime (struct tm *timeptr)
把 timeptr 所指向的结构转换为一个依据本地时区的 time_t 值。
8、size_t strftime (char *str, size_t maxsize, const char *format, const struct tm *timeptr)
根据 format 中定义的格式化规则,格式化结构 timeptr 表示的时间,并把它存储在 str 中。
9、time_t time (time_t *timer)
计算当前日历时间,并把它编码成 time_t 格式。
也就是得到从标准计时点(一般是1970年1月1日午夜)到当前时间的秒数。
函数功能: 得到系统当前的日历时间
函数返回: 系统当前日历时间,如果不能获得当前日历时间,则返回-1
2、static静态
C与C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static。前者应用于普通变量和函数,不涉及类;后者主要说明static在类中的作用。
C++
(1)静态全局变量
在全局变量前,加上关键字static,该变量就被定义成为一个静态全局变量。
静态全局变量有以下特点:
1、该变量在全局数据区分配内存;
2、未经初始化的静态全局变量会被程序自动初始化为0(在函数体内声明的自动变量的值是随机的,除非它被显式初始化,而在函数体外被声明的自动变量也会被初始化为0);
3、静态全局变量在声明它的整个文件都是可见的,而在文件之外是不可见的;
定义静态全局变量有以下好处:
1、静态全局变量不能被其它文件所用;
2、其它文件中可以定义相同名字的变量,不会发生冲突;
注意:全局变量和全局静态变量的区别
1、全局变量是不显式用static修饰的全局变量,全局变量默认是有外部链接性的,作用域是整个工程,在一个文件内定义的全局变量,在另一个文件中,通过extern 全局变量名的声明,就可以使用全局变量。
2、全局静态变量是显式用static修饰的全局变量,作用域是声明此变量所在的文件,其他的文件即使用extern声明也不能使用。
(2)静态局部变量
在局部变量前,加上关键字static,该变量就被定义成为一个静态局部变量。
静态局部变量有以下特点:
1、该变量在全局数据区分配内存;
2、静态局部变量在程序执行到该对象的声明处时被首次初始化,即以后的函数调用不再进行初始化;
3、静态局部变量一般在声明处初始化,如果没有显式初始化,会被程序自动初始化为0;
4、它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;
3、exit()
所在头文件:stdlib.h
exit(0):关闭所有文件,终止正在执行的进程。
_exit(0):不能输出结果,未清除I/O缓存,不打印。
exit(x) :(x不为0)都表示异常退出
exit(1):非正常运行导致退出程序;这个1是返回给操作系统的。。
在main中return v;的效果与exit(v);相同。
4、文件指针
它是一个FILE类型的指针
可以通过下面的方式声明一个文件指针
FILE *fp;
如果希望对一个文件进行操作,需要先使用
fp = fopen(文件路径, 访问模式);
将文件指针和文件关联起来,其中第一个参数是一个字符串,对应了我们希望访问的文件