7.C语言(5)
来源:互联网 发布:梧桐一叶落而天下知秋 编辑:程序博客网 时间:2024/06/02 01:18
一、结构体
1.声明一个结构体类型的一般形式为:struct 结构体名 {成员表列};
2.定义结构体类型变量:
(1)先声明结构体类型再定义变量名 例如:struct student student1, student2;
(2)在声明类型的同时定义变量 这种般形式为:
struct 结构体名
{
成员表列;
}变量名表列;
3. 在定义了结构体变量以后,当然可以引用这个变量 但应遵守以下规则:
(1)不能将一个结构体变量作为一个整体进行输入和输出 例如: 已定义student1和student2为结构体变量并且它们已有值 printf(″%d,%s,%c,%d,%f,%\n″,student1); 错误
(2) 可以引用结构体变量成员的地址,也可以引用结构体变量的地址 例如:scanf(″%d″,&student1.num); (输入student1.num的值)printf(″%o″,&student1);
4.结构体成员的表现形式:结构体变量.成员名 (*p).成员名 p->成员名 其中->称为指向运算符
二、结构体和链表
用结构体建立链表:
struct student
{
int num;
float score;
struct student *next ;
};
其中成员num和score用来存放结点中的有用数据(用户需要用到的数据),next是指针类型的成员,它指向struct student类型数据(这就是next所在的结构体类型)
三、内存管理
库函数提供动态地开辟和释放存储单元的有关函数
(1)malloc函数: void *malloc(unsigned int size); 其作用:是在内存的动态存储区中分配一个长度为size的连续空间
返回值:是一个指向分配域起始地址的指针(类型为void)。如果此函数未能成功地执行(例如内存空间不足),则返回空指针(NULL)
(2)calloc函数 :void *calloc(unsigned n,unsigned size);作用:在内存的动态存储区中分配n个长度为size的连续空间
返回值:一个指向分配域起始地址的指针; 如果分配不成功,返回NULL 用calloc函数可以为一维数组开辟动态存储空间,n为数组元素个数,每个元素长度为Size。
(3)free函数: void free(void *p);作用:释放由p指向的内存区,使这部分内存区能被其他变量使用
p是最近一次调用calloc或malloc函数时返回的值 free函数无返回值
四、union、enum、typedef
1.共用体:使几个不同的变量共占同一段内存的结构 称为 “共用体”类型的结构
定义共用体类型变量的一般形式为:
union 共用体名
{
成员表列
}变量表列;
2.共用体和结构体的比较:
结构体变量所占内存长度是各成员占的内存长度之和。每个成员分别占有其自己的内存单元
共用体变量所占的内存长度等于最长的成员的长度
3.枚举:将变量的值一一列举出来,变量的值只限于列举出来的值的范围内
申明枚举类型用enum enum weekday{sun,mon,tue,wed,thu,fri,sat};
定义变量:
enum weekday workday,week-day; enum{sun,mon,tue,wed,thu,fri,sat}workday;变量值只能是sun到sat之一
4.用typedef声明新的类型名来代替已有的类型名
用typedef定义类型的方法:
(1)先按定义变量的方法写出定义体(如:int i)
(2)将变量名换成新类型名(例如:将i换成COUNT)
(3)在最前面加typedef(例如:typedef int COUNT)
(4)然后可以用新类型名去定义变量
声明num为整型数组类型 : typedef int NUM[100];
声明string为字符指针类型: typedef char *STRING;
声明POINTER为指向函数的指针类型,该函数返回整型值 : typedef int (*POINTER)( )
- 7.C语言(5)
- 孔乙己学C语言(5)
- C语言5(函数)
- C语言笔记(5)
- C语言总结(5)
- C语言回炉(5)
- C语言概述(5)
- C语言(一)C语言格式
- C语言笔记(C++)
- C语言函数大全(5)
- c语言解析系列(5)指针
- C语言要点摘录(1~5)
- (1.1.5) C语言数据类型长度
- C语言(5)--链表操作
- C语言陷阱与缺陷(5)
- C语言参考手册(第5版)
- C语言的公共基础知识(5)
- C语言趣味程序(5)
- 使用SVG打造可交互的自定义地图
- 测试手机闪存读写速度
- HDU 1727 Hastiness(模拟)
- hdoj 2844 Coins(多重背包)
- Oracle数据库的表空间
- 7.C语言(5)
- 分别显示用float和double指数记数法所能表示的最大值和最小值 以一个最高有效位为1的二进制数字开始,用有符号右移操作符对其进行右移,直至所有二进制位都被移除为止,每移一位都要使用Integer
- Handler图片自动轮播
- JAVA-"abstract"与"接口(interface)"
- C++ 二叉树建立,遍历
- android 倒计时控件布局
- ValueError: invalid literal for int() with base 10: '7.8000000e+02'
- Android 第三方登录
- 7.ES6 变量的解构赋值 (Destructuring)