c语言拓展关键字及其他
1.数据类型枚举enum
定义格式
第一个枚举成员的默认值为整型的 0,后续枚举成员的值在前一个成员上加 1,如果定义第一个为1,第二个就是2
可以在定义枚举类型时改变枚举元素的值,
enum season {spring, summer=3, autumn, winter};
没有指定值的枚举元素,其值为前一元素加 1。也就说 spring 的值为 0,summer 的值为 3,autumn 的值为 4,winter 的值为 5
2.关键字extern引入外部变量,外部函数
extern 类型名 变量名;
3.register寄存器变量
计算机存储数据从快到慢,从少到多依次为寄存器、高速缓存、内存、硬盘
register int a=10建议把a定义为寄存器变量
4.typedef类型定义
5.union联合体,共用体
用法:
6.关键字volatile
是一个类型修饰符(type specifier)。它是被设计用来修饰被不同线程访问和修改的变量。如果没有volatile,基本上会导致这样的结果:要么无法编写多线程程序,要么编译器失去大量优化的机会。
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,告诉编译器对该变量不做优化,都会直接从变量内存地址中读取数据,从而可以提供对特殊地址的稳定访问。
如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。(简洁的说就是:volatile关键词影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错)
7.宏定义 #define 标识符 字符串
8.Sleep()数字,头文件#include
9.system(“***”)头文件#include
cls清空屏幕
shutdown -s -t 60电脑一分钟后关机
shutdown -a停止关机
10==不能用来比较两个字符串是否相等,使用一个库函数strcmp,头文件#include
这个strcmp函数规定左边大于右边返回正数,左边等于右边返回0,左边小于右边返回负数
11.生成随机数 srand((unsigned int)time(NELL))
100以内,就%100-1
12.内存操作函数:memset
时间/日期函数:time
strcpy字符串拷贝
13.static静态局部变量
局部变量生命周期变长
14.修饰全局变量和函数时,改变变量的作用域,让静态全局变量只能在自己的源文件内部使用,使用extern没用
15EOF值是-1,按ctrl+z