枚举:
enum 枚举类型名字{名字0,名字1,·······,名字n};
enum color{red,yellow,green};
void f(enum color c);
枚举中的套路:
enum COLOR{RED,YELLOW,GREEN,NUMCOLOR};
声名枚举量的时候可以指定值
声名结构类型时记得加 “;”
结构和数组有点像,数组用[]运算符和下标访问其成员,a[0]=10;
p1=(struct point){5,10}; 相当于 p1·x=5 ; p1·y=10;
结构用 · 运算符和名字访问其成员,today·day
和数组不同,结构变量的名字并不是结构变量的地址,必须使用& struct date*pDate=&today;
整个结构作为函数参数的值传入函数
int numberofdays(struct date d)
用->表示指针所指的结构变量中的成员
若有变量定义:
struct rectangle r,*rp;
rp=&r;
那么下面四种形式等价:
r.pt1.x rp->pt1.x (r.pt1).x (rp->pt1).x
但是没有rp->pt1->x (因为pt1不是指针 )
类型定义:
typedef int length;
使得length 成为int 类型的别名 (第一个是原来的类型,第二个是新的别名)
例如:
typedef struct {
int month;
int day;
int year;
} Date;
联合
Union Anelt{
int i;
char c;
} etl1,etl2;
全局变量:
若函数内部存在与全局变量同名的变量,则全局变量被隐藏
具有全局的生存期,全局的作用域;
本地变量:
具有本地的生存期,本地的作用域;
静态本地变量:
在本地变量定义时加上static修饰符就成为静态本地变量
当函数离开时,静态本地变量会继续存在并保持其值,静态本地变量只做一次初始化
静态本地变量实际上是特殊的全局变量,他们位于相同的内存区域,静态局部变量具有全局的生存期,本地的作用域
不要使用全局变量来在函数间传递参数和结果
尽量避免使用全局变量