知识点:
1.int 变量跟只包含一个int 成员的结构变量,在传递参数的方式可能完全不同。一个 int参数一般会传递到寄存器中,而结构参数很可能被传递到堆栈中。
2.在结构中放置数组,可以讲数组当做第一等级类型,用赋值语句拷贝整个数组。
struct s_tag {int a[100];};
struct s_tag orange, lime;
int main()
{
int i;
for(i=0; i<100; i++) lime.a[i]=1;
orange=lime; //对整个结构赋值
}
3.union
为了节省空间
为了把一个数据解释为两种不同的东西。
4.enum
#define定义的名字一般在编译时期被丢弃,而枚举名字则通常一直在调试器中可见。可以再调试代码的时候看见他们。
5.typedef int x[10] 与 #define x int[10]区别
可以用其他类型说明符对宏类型名进行扩展
,但是不能对type的饭定义的类型名,进行扩展
#define peach int
unsigned peach i;//right
typedef int banana;
unsigned banana i;//error
在连续几个变量声明中,用typedef定义的类型能够保证声明中
所有变量均为同一种类型,但是#define定义的类型不能保证。
#define int_ptr int*;
int_ptr chalk, cheese;
结果:int * chalk, cheese;(他们两个类型不同)
#typedef char* char_ptr
char_ptr ben, rool(两个都是指向char的指针)
6. 不要为了方便对结构使用typedef,虽然可以省去struct但是省去了提示信息。
用在数组,结构,指针,以及函数的组合类型。结构标签可以添加“_tag”结尾。