教学课件 C语言程序设计—项目教学教程(第三版).pptVIP

  • 31
  • 0
  • 约2.02万字
  • 约 73页
  • 2021-01-16 发布于江苏
  • 举报

教学课件 C语言程序设计—项目教学教程(第三版).ppt

(2)结构指针变量的赋值   在前面章节中介绍过各类指针变量要先赋值后使用。结构指针变 量也必须先赋值后才能使用。我们在赋值时,不能把结构名赋予该指针 变量,而是把结构变量的首地址赋予该指针变量。在上述声明中, student1是被说明为student类型的结构指针变量,如果再声明一个结构 变量student2则: student1= student2 是正确的,而: student1=student 是错误的。    结构名和结构变量不能混淆,它们两个不同的概念。结构名只能 表示一个结构形式,编译系统并不对它分配内存空间。只有当某变量被 说明为这种类型的结构时,才对该变量分配存储空间。因此上面 student这种写法是错误的,不可能去取一个结构名的首地址。有了结 构指针变量,就能更方便地访问结构变量的各个成员。 (3)结构变量成员的访问   在引例的第18行中,采用了一种方式来引用结构指针变量成员,是 否还有其他方式呢?下面介绍结构指针变量成员访问的形式。   其访问的一般形式为:    (*结构指针变量).成员名   或为:   结构指针变量-成员名   例如:    (*student1).num   或者:   student1-num   特别注意是(*student1)两侧的括号必不可少,按照运算符的优先级 级来看,成员符“.”的优先级高于“*”。如去掉括号写作*student1.num则等 效于*(student1.num),这样形式的意义就完全不对了。 2. 动态存储分配   在学生信息表中,学生的记录可能动态增加, 因此不能确定所需存储空间,为了解决这样的问 题,在C语言中提供了一些内存管理函数,这些内 存管理函数可以按照需要动态地分配内存空间,也 可把不再使用的空间回收待用,为有效地利用内存 资源提供了管理手段。   常用的内存管理函数有以下三个: (1)分配内存空间函数malloc 该函数调用形式:    (类型说明符*)malloc(size) 功能:在内存的动态存储区中分配一块长度为“size”字节的连续区域。函 数的返回值为该区域的首地址。   “类型说明符”表示把该区域用于存储何种数据类型。   (类型说明符*)表示把返回值强制转换为该类型指针。   “size”是一个无符号数。 例如: number=(char *)malloc(1000); 表示分配1000个字节的内存空间,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针赋予指针变量number。 (2)分配内存空间函数 calloc calloc 也用于分配内存空间。 该函数调用形式: (类型说明符*)calloc(m,size) 功能:在内存动态存储区中分配m块长度为“size”字节的连续区域。函数 的返回值为该区域的首地址。 (类型说明符*)用于强制类型转换。 calloc函数与malloc 函数的区别仅在于一次可以分配m块区域。 例如: Pnum=(struet student*)calloc(2,sizeof(struct stu)); 其中的sizeof(struct stu)是求stu的结构长度。因此该语句的意思是:按 student的长度分配2块连续区域,强制转换为student类型,并把其首地 址赋予指针变量Pnum。 (3)释放内存空间函数free 该函数调用形式:   free(void*ptr); 功能:释放ptr所指向的一块内存空间,ptr是一个任意类型的 指针变量,它指向被释放区域的首地址。被释放区应是由malloc或calloc函数所分配的区域。 2.链表 在上述例子中采用了动态分配的办法为一个结构分配内存空间。每一 次分配一块空间可用来存放一个学生的数据,我们可称之为一个结点。 有多少个学生就应该申请分配多少块内存空间,也就是说要建立多少个 结点。在不能确定学生记录的情况下,无法用数组来实现,为了解决这 样的问题,最好的办法就是动态分配空间。当学生记录不需要的时候, 可以删去该结点,并释放该结点占用的存储空间。从而节约了宝贵的内 存资源放。如果使用数组,则必须分配一块连续的内存区域。而使用动 态分配时,每个结点之间可以是不连续的,结点之间的联系可以用指针 实现。 即在结点结构中定义一个成员项用来存放下一结点的首地址,这 个用于存放地址的成员,常把它称为指针域。可在第一个结点的指针域 内存入第二个结点的首地址,在第二个结点的指针域内又存放第三个结 点的首地址,以此类推去直到最后一个结点。最后一个结点因无后续结 点连接,其指针域可赋为0。这样一种连接方式,在数据结构中称为“链 表”。 链表

文档评论(0)

1亿VIP精品文档

相关文档