C Note(NO.6)

结构体:一般形式为:
struct 结构名{

成员表列

}变量名表列;

表示结构变量成员的一般形式是:
结构变量名.成员名

数组的元素也可以是结构类型的。因此可以构成结构型数组。结构数组的每一个元素都是具有相同结构类型的下标结构变量。
struct stu
{
    int num;
    char *name;
    char sex;
    float score;
}boy[5];

一个指针变量当用来指向一个结构变量时,称之为结构指针变量。结构指针变量中的值是所指向的结构变量的首地址。
 结构指针变量说明的一般形式为:
struct 结构名 *结构指针变量名

其访问的一般形式为:
(*结构指针变量).成员名:括号不可少,为成员符“.”的优先级高于“*”。
      或为:
结构指针变量->成员名

 

指针变量可以指向一个结构数组,这时结构指针变量的值是整个结构数组的首地址。结构指针变量也可指向结构数组的一个元素,这时结构指针变量的值是该结构数组元素的首地址。一个结构指针变量虽然可以用来访问结构变量或结构数组元素的成员,但是,不能使它指向一个成员。也就是说不允许取一个成员的地址来赋予它,即s=&stu[0]是错的。
 

常用的内存管理函数有以下三个:
1. 分配内存空间函数 malloc
调用形式:
(类型说明符*)malloc(size)
功能:在内存的动态存储区中分配一块长度为"size"字节的连续区域。函数的返回值为该区域的首地址。“类型说明符”表示把该区域用于何种数据类型。(类型说明符*)表示把返回值强制转换为该类型指针。“ size”是一个无符号数。
                     pc=(char *)malloc(100);

2. 分配内存空间函数 calloc
calloc 也用于分配内存空间。
调用形式:
(类型说明符*)calloc(n,size)
功能:在内存动态存储区中分配 n 块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。(类型说明符*)用于强制类型转换。calloc 函数与 malloc 函数的区别仅在于一次可以分配 n 块区域。
                  ps=(struet stu*)calloc(2,sizeof(struct stu));
3. 释放内存空间函数 free
调用形式:
free(void*ptr);
功能:释放 ptr 所指向的一块内存空间, ptr 是一个任意类型的指针变量,它指向被释放区域的首地址。被释放区应是由 malloc 或 calloc 函数所分配的区域。

1. 枚举的定义枚举类型定义的一般形式为:
        enum 枚举名{ 枚举值表 };例子:enum weekday{ sun,mou,tue,wed,thu,fri,sat };
在枚举值表中应罗列出所有可用值。这些值也称为枚举元素。

2. 枚举变量的说明
如同结构和联合一样,枚举变量也可用不同的方式说明,即先定义后说明,同时定
义说明或直接说明。
设有变量 a,b,c 被说明为上述的 weekday,可采用下述任一种方式:
enum weekday{ sun,mou,tue,wed,thu,fri,sat };
enum weekday a,b,c;
或者为:
enum weekday{ sun,mou,tue,wed,thu,fri,sat }a,b,c;
或者为:
enum { sun,mou,tue,wed,thu,fri,sat }a,b,c;
 

枚举类型在使用中有以下规定:
1. 枚举值是常量,不是变量。不能在程序中用赋值语句再对它赋值
2. 枚举元素本身由系统定义了一个表示序号的数值,从 0 开始顺序定义

typedef 定义的一般形式为:
        typedef 原类型名 新类型名
其中原类型名中含有定义部分,新类型名一般用大写表示,以便于区别。
有时也可用宏定义来代替 typedef 的功能,但是宏定义是由预处理完成的,而 typedef则是在编译时完成的,后者更为灵活方便。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章