每周来点C语言零碎小知识(6)

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、它始终驻留在全局数据区,直到程序运行结束。但其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束;

参考:static
time.h
time.h

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(文件路径, 访问模式); 

将文件指针和文件关联起来,其中第一个参数是一个字符串,对应了我们希望访问的文件

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值