图4.18程序运行结果设有3 个学生的4 门课成绩,求每个学生4 门课程的总评成绩、3 个学生每门课程的平均成绩。图4.19程序运行结果挑战节目主持人。图4.20程序运行结果联合国排名是以国家名的英文字母排序,社会上也常以姓氏的汉语拼音字母排序。就这样,用字符数组min 依次与新输入的字符串比较,直到输入字符串为空时为止。图4.21程序运行结果......
2025-09-30
在数组一章中,曾介绍过数组的长度是预先定义的,在整个程序中固定不变。C语言中不允许动态数组类型。例如:
用变量表示长度,想对数组的大小作动态说明,这是错误的。但是在实际编程中,往往会发生这种情况,即所需的内存空间取决于实际输入的数据。对于这种问题,用数组的办法很难解决。因此,C语言提供内存管理函数,可以按需要动态分配内存空间,也可以把不再使用的空间收回。常用内存管理函数有3 个。
1.分配内存空间函数malloc
调用格式:
功能:在内存的动态存储区中分配一块长度为“size”字节的连续区域,“size”是一个无符号数。函数的返回值为该区域的首地址。“类型说明符”表示把该区域用于何种数据类型。(类型说明符)表示把返回值强制转换为该类型指针。例如:
表示分配100 个字节大小的单元,并强制转换为字符数组类型,函数的返回值为指向该字符数组的指针,把该指针赋予指针变量pc。
2.分配内存空间函数calloc
调用格式:
功能:在内存动态存储区中分配n 块长度为“size”字节的连续区域。函数的返回值为该区域的首地址。(类型说明符)用于强制类型转换。函数calloc 与malloc 的区别仅在于一次可以分配n 块区域。例如:(https://www.chuimin.cn)
其中的sizeof(struct stu)是求stu 的结构长度。因此该语句的意思是:按stu 的长度分配2 块连续区域,强制转换为stu 类型,并把其首地址赋予指针变量ps。
3.释放内存空间函数free
调用格式:
功能:释放ptr 所指向的一块内存空间,ptr 是一个任意类型的指针变量,它指向被释放区域的首地址。被释放区是由函数malloc 或calloc分配的。
【例7.8】分配一块区域,输入一个学生数据。程序如下:
程序运行结果如图7.9 所示。
图7.9 程序运行结果
说明:这里定义了stu 结构,定义了stu 类型指针变量ps。然后分配一块stu 结构的内存区,并把首地址赋予ps,使ps 指向该区域。再以ps 作为指向结构的指针变量对各成员赋值,并用printf 输出各成员值。最后用free 函数释放ps 指向的内存空间。整个程序包含了申请内存空间、使用内存空间、释放内存空间三个步骤,实现了存储空间的动态分配与管理。
相关文章
图4.18程序运行结果设有3 个学生的4 门课成绩,求每个学生4 门课程的总评成绩、3 个学生每门课程的平均成绩。图4.19程序运行结果挑战节目主持人。图4.20程序运行结果联合国排名是以国家名的英文字母排序,社会上也常以姓氏的汉语拼音字母排序。就这样,用字符数组min 依次与新输入的字符串比较,直到输入字符串为空时为止。图4.21程序运行结果......
2025-09-30
在C 语言中,具有一定功能、相对独立的程序段称为函数。无论主函数main()位于程序中的什么位置,程序执行时总是从main()开始。C 语言程序的一般结构如图5.1 所示。它具有以下特点:图5.1C 程序中的函数C 语言允许一个程序由多个源文件组成,每个源文件可以独立编译,一个源文件可以被不同的程序使用。一个C 程序有且仅有一个主函数main,主函数可以放在任何一个源文件中,程序总是从主函数开始执行。......
2025-09-30
在一个C 程序中,有且只能有一个名为main 的函数,该函数称为主函数。程序执行始终是始于主函数,结束于主函数。C 程序中的每个语句都是以分号(;)作为语句结束符的。......
2025-09-30
程序中的每个“变量灯”的“功率”大小不一,因此它们的作用域就不相同了。这一点表明形参变量只有在函数内才是有效的,这种变量的有效范围称变量的作用域。变量说明的方式不同,其作用域也不同。在内部变量的作用域内,外部变量将被屏蔽而不起作用。外部变量说明的一般格式:外部变量的作用域是从定义位置到本源文件结束。......
2025-09-30
for 语句的运行过程如图3.10 所示。下面给出应用最广泛、也最容易理解的for 语句的一般形式:图3.10for 循环执行流程图用for 循环结构来计算1+2+3+…“表达式1”通常用于循环变量赋初值,如果省略,表示不对循环变量赋初值或者已经把赋初值语句放在了for 语句前面。......
2025-09-30
但是允许在一个函数的定义中出现对另一个函数的调用,即函数的嵌套调用。图5.9函数嵌套调用与子程序嵌套类似,是在执行主函数main()中调用函数a()的语句时,转去执行函数a();在函数a()中调用函数b()时,转去执行函数b();在函数b()执行完毕,返回函数a()的继续执行;函数a()执行完毕,返回主函数main()。函数嵌套调用举例。图5.11程序运行结果统计一批数据中大于平均值的数据总数。图5.12程序运行结果......
2025-09-30
图7.8程序运行结果说明:程序中定义了函数ave,其形参为结构体指针变量ps。boy 被定义为外部结构体数组,在整个源程序中有效。......
2025-09-30
相关推荐