热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c语言参数不能但单向传递,C语言程序设计课件第四章.ppt

《C语言程序设计课件第四章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件第四章.ppt(16页珍藏版)》请在人人文库网上搜索。1、本章的

《C语言程序设计课件第四章.ppt》由会员分享,可在线阅读,更多相关《C语言程序设计课件第四章.ppt(16页珍藏版)》请在人人文库网上搜索。

1、本章的主要内容包括:C语言函数的概念,如何调用C语言提供的库函数,如何定义函数和调用这些函数。中的数据表示由多个文件组成的C程序的方法变量生命周期范围,以及C语言的数学函数。第四章功能和程序结构,回到第一页,问题:(1)程序越来越长。难以理解,可读性降低。(2)重复代码增加,某个程序可能执行多次。(3)一个问题中的代码不能在其他类似的问题中重用。必须重复最初的设计编码过程。函数是一种机制,它可以有效地分解复杂的描述,控制程序的规模和复杂性。需要抽象成功能的程序段:(1)具有独立功能和逻辑意义的程序段;(2)重复出现的代码段。函数机制的好处是:(1)函数可以多次调用,减少了程序长度,保持了函数意。

2、义的一致性。(2)增加程序的可读性。(3)模块化和结构性较强。两种观点:从函数的外部调用方的角度。从函数内部实现者的角度来看。4.1概述,在C程序中调用库函数需要两个步骤:1 .使用include命令指出库函数的相关定义和描述。Include命令必须以“#”开头,系统提供的头文件采用。h作为文件后缀,文件名用一组尖括号或一对双撇号括起来。# include开头的程序行不是C语句,并且“;”未添加在第2号末尾调用标准库函数调用库函数的形式为:函数名(参数表)(1)在表达式中调用:函数是表达式的操作数。例如y=z * sin(x)0.5;(2)作为一个独立的语句:它可以被视为一个表达式语句,如pr。

3、intf (%dn ,a);4.2库函数,用C语言定义的函数的一般形式是:函数返回值类型名函数名(类型名参数1,类型名参数2) /*头*/描述部分/*函数体*/语句部分返回语句的形式如下:返回表达式;或返回(表达式);或者返回;返回函数:退出函数并返回函数值。4.3函数定义,4.4.1函数调用形式:函数名(实际参数表)调用函数时,要注意以下几点:(1)调用名称必须与定义的名称完全一致。(2)实际参数个数与形式参数个数相同,类型相同。如果它们不匹配,将自动转换。不兼容的赋值转换(某些类型不能被赋值,如指针和浮点类型之间)不会给出错误消息,程序将继续运行,但结果是不正确的。(3)它可以嵌套和调用。。

4、例如,函数甲调用函数乙,函数乙调用函数丙。C语言规定所有函数都是并行和独立的。不允许嵌套定义(一个函数的定义包含另一个函数的完整定义),但允许嵌套调用。4.4函数调用和描述,4.4.2函数描述,即在调用之前描述函数,称为函数的原型描述。形式如下:类型名称函数名称(参数类型列表或参数列表);形式上,它可以理解为第一个加号“;”函数定义的,其功能是检查调用时参数的数量和类型是否正确。因此,在参数列表中,只需要类型名,例如有形的参数名,它可以是任何用户标识符,并且不必与函数定义的参数相同。4.4函数调用和描述,C语言,调用函数和被调用函数之间有三种数据传输方式:(1)实际参数和形式参数之间的数据传输。

5、(2)返回语句将函数值返回给调用函数。(3)通过全局变量。(本章稍后将讨论全局变量。在C语言中,实际参数和形式参数之间的数据传递方式称为“值传递”,数据只能从实际参数单向传递到形式参数。调用函数时,首先计算参数表达式的值,并将计算出的值分别赋给相应的参数,然后进入函数体执行。参数本身是函数的局部变量,并且C语言的函数调用机制非常简单,在C语言中,值传递是结合实际参数和参数的唯一途径。在接下来的章节中,我们将看到数组名和指针被用作函数参数,它们组合实际参数和参数的方式不能脱离值传递的本质。4.5调用函数和调优函数之间的数据传递,递归函数是指在函数执行过程中直接或间接调用自身的函数。前者称为简单递。

6、归,而后者称为间接递归。递归程序执行过程中递归函数的特点:递归结束有一定的条件。递归函数的效率递归与递归的关系4.7函数实例,4.6递归函数,4.8.1程序结构C语言规定,不允许在一个函数内部定义另一个函数,所以所有函数都是在程序表面定义的,整个程序结构比较简单。程序结构讨论了C程序函数、数据和变量定义的组织方法,特别是当需要多个文件来组织程序时,程序单元和内容的组织。4.8.2在程序中定义变量时,变量的范围和存在周期有几种含义:(1)给变量一个名称,变量的存储空间可以用程序中的名称来操作,可以取值和赋值;(2)定义了可变存储空间中数据的存在形式、范围和操作;(3)变量可以在程序中使用的地方;。

7、(4)在程序运行期间,何时分配和取消该变量的存储空间。4.8变量的作用域和生存期,4.8.2变量的作用域和生存期:在源程序的某个部分,变量定义是有效的,可以使用变量的名称来执行与变量相关的操作。每个变量都有一个明确的“范围”,这是由变量定义出现的位置决定的。范围是指变量的范围。定义的范围是源程序中的一个段落,相关的段落可以从源程序正文中抽出来。因此,范围是一个静态的概念。这与程序执行无关。存在周期:程序中变量存在的周期称为变量的“周期”。生存周期是一个动态的概念。这大约是一段时间的程序执行。在变量存在期间,它所占用的存储单元保持不变。只要变量没有重新赋值,单位中的值就保持不变。程序在内存中使用。

8、的存储空间分为三个部分:程序区、静态存储区和动态存储区。4.8变量的范围和寿命,4.8.2变量的范围和寿命存储类别是指变量在内存中的存储位置,包括静态和动态存储类别。有四种描述符与存储类别相关:自动静态寄存器外部。这些描述符通常与类型名一起出现,可以放在类型名的左侧或右侧。前三个存储类别的声明和定义一起使用,不能分开。4.8.2.1全局变量的范围和寿命定义在函数外部的任何位置的变量称为全局变量,也称为外部变量。它的范围是从定义变量的位置到原始文件的末尾。全局变量只有一个静态存储类别,它的生命周期是整个程序的运行周期。讨论了全局变量的定义和使用时的注意事项,并讨论了使用同一个全局变量在不同函数之。

9、间进行通信的特点和优缺点。本文讨论了使用外部描述符和静态描述符定义全局变量的区别。4.8变量的作用域和生存期,4.8.2变量的作用域和生存期4.8.2.2局部变量的作用域和生存期是在函数或复合语句内定义的变量,仅在函数或复合语句的作用域内有效,不能在此函数或复合语句之外使用。您可以使用自动、静态和注册说明符。1.自动变量使用自动描述符定义局部变量,或者不指定存储类,系统认为定义的变量具有自动类别。系统为自动变量动态分配存储空间,数据存储在动态存储区。局部变量的定义必须在函数体或复合体中的所有可执行语句之前。自动变量的范围是从定义的位置到函数体或复合体的末尾。其存储单元在进入这些局部变量所在的函。

10、数体(或复合体)时生成,在退出它们所在的函数体(或复合体)时消失,这是自动变量的存在周期。当再次进入函数体(或复杂体)时,系统会为它们分配另一个存储单元,因此不可能保留变量值。讨论使用自动变量的优点。4.8变量的作用域和寿命,4.8.2变量的作用域和寿命4.8.2.2作用域和局部变量的寿命2。寄存器变量寄存器变量也是一个自动变量,它与自动变量的区别仅在于建议编译器使用寄存器描述的变量将变量值保存在中央处理器的寄存器中,而不是像通用变量那样占用存储单元。局部变量的定义必须在函数体或复合体中的所有可执行语句之前。讨论寄存器变量的特点和使用中的注意事项。3.静态变量由函数体(或复合体)内部的静态描述。

11、的变量称为静态局部变量。静态局部变量与自动变量和寄存器变量具有相同的作用域,但是它们的生命周期本质上是不同的,应该延长到程序运行结束。静态局部变量占据静态存储区中的永久存储单元。当一个函数退出时,它将在下次再次进入该函数。静态局部变量仍然使用原始存储单元。讨论了静态变量的特点和使用中的注意事项,4.8变量的作用域和寿命,以及外部变量和静态变量(存储在静态存储区)的定义在程序启动前已经完成,并且其初始化也是在程序执行前完成的,并且只有一次。初始化表达式有严格的限制,只有在不执行程序的情况下(在编译阶段)可以找到常数值的表达式才能使用。初始化外部变量和静态变量的方法是直接用文字量或文字量、符号常数。

12、和基本运算符号来构造表达式。它不能包括涉及赋值的各种操作(如,-等)。)。如果定义时没有写初始化,系统会在创建时自动初始化为0。对于存储在动态存储区的局部变量,存储单元是在程序执行过程中调用相应的函数或复杂函数时动态分配的。只要满足类型约束,初始化表达式的形式没有限制。由于存储单元在每次调用后都被释放,并且存储单元在下一次调用中被重新分配,因此每次建立存储单元时都需要重新初始化。如果在定义时不写初始化,则指定单元格中的值是不确定的。此时,在使用变量之前,程序必须具有给变量存储单元赋值的操作,否则,变量的值是不确定的。许多编译系统警告不要出现这样的问题。4.8.3变量初始化,并讨论内部和外部函数。

13、的特性。方法使用外部说明符和静态说明符。使用内部和外部函数的好处。4.9多文件程序的组织和调试方法4.9.1多文件程序的组织方法讨论教材中关于多文件程序的组织方法的5条指导意见4.9.2多文件程序的运行和调试方法(1)编辑源文件(2)建立项目文件(3)打开项目文件(4)编译和连接(5)执行,4.8.4内部和外部函数,4定义方法、规范、返回值、函数返回和函数调用。函数间参数传递的调节。形式与实际参数的对应关系、参数传递方式、无效函数。变量的存储类型。变量的存在周期和范围的概念,四种存储变量的解释方法、特点和适用范围,不同存储类型的变量在使用上的差异,变量的初始化方法,以及使用外部变量在函数之间传递数据的规定。多文件程序的组织和实现方法;公共库函数的使用。掌握本章的关键是理解函数的参数传递机制。



推荐阅读
  • 本文探讨了C语言中指针的应用与价值,指针在C语言中具有灵活性和可变性,通过指针可以操作系统内存和控制外部I/O端口。文章介绍了指针变量和指针的指向变量的含义和用法,以及判断变量数据类型和指向变量或成员变量的类型的方法。还讨论了指针访问数组元素和下标法数组元素的等价关系,以及指针作为函数参数可以改变主调函数变量的值的特点。此外,文章还提到了指针在动态存储分配、链表创建和相关操作中的应用,以及类成员指针与外部变量的区分方法。通过本文的阐述,读者可以更好地理解和应用C语言中的指针。 ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • C语言判断正整数能否被整除的程序
    本文介绍了使用C语言编写的判断正整数能否被整除的程序,包括输入一个三位正整数,判断是否能被3整除且至少包含数字3的方法。同时还介绍了使用qsort函数进行快速排序的算法。 ... [详细]
  • 全面介绍Windows内存管理机制及C++内存分配实例(四):内存映射文件
    本文旨在全面介绍Windows内存管理机制及C++内存分配实例中的内存映射文件。通过对内存映射文件的使用场合和与虚拟内存的区别进行解析,帮助读者更好地理解操作系统的内存管理机制。同时,本文还提供了相关章节的链接,方便读者深入学习Windows内存管理及C++内存分配实例的其他内容。 ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
  • ejava,刘聪dejava
    本文目录一览:1、什么是Java?2、java ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了一个程序,可以输出1000内能被3整除且个位数为6的所有整数。程序使用了循环和条件判断语句来筛选符合条件的整数,并将其输出。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
author-avatar
临海小少年
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有