c语言基础篇D

D1.函数概述

  1. 一个c程序可以由一个主函数和若干个其他函数构成,一个较大的程序可分为若干个程序模块,每一个模块用来实现一个特定的功能。在高级语言中用子程序实现模块的功能。子函数由函数来完成
  2. 一个c程序由一个或多个程序模块构成,每一个程序模块作为一个源程序文件。对于较大的程序。通常将程序内容分别放在若干个源文件中,再有若干源程序文件组成一个c程序。
  3. 一个源程序文件可以为多个c程序公用
  4. 一个源程序文件由一个或多个函数以及其他有关内容(命令行,数据定义)组成。一个源程序文件是一个编译单位,在程序编译时是以源程序文件为单位进行编译的。而不是以函数为单位编译的。
  5. c程序的执行是从main函数开始的,如果在main函数中调用其它函数,在调用后流程返回到main函数,在main函数中结束整个程序的运行
  6. 所有函数都是平行的,在定义函数时是分别进行的,是互相独立的。一个函数并不从属于另一函数,即函数不能嵌套定义。函数间可以互相调用,但不能调用main函数。mian函数是系统调用

D2.从用户角度看两种函数

  1. 标准函数
  • 即库函数。这是由系统提供的,用户不必自己定义这些函数,可以直接使用它们。
  • 不同的c系统提供的库函数的数量和功能会有些不同,但许多基本的函数是共同的
  • c编译系统提供的库函数,只需用#include命令把有关的头文件包含到本文件模块中即可
  1. 用户自己定义的函数。用以解决用户的专门需要

D3.从函数的形式看两种函数

  1. 无参函数
  • 无参函数一般用来执行指定的一组操作,在调用无参函数时,主调函数不向被调用函数传递数据
  1. 有参函数
  • 主调函数在调用被调用函数时,通过参数向被调用函数传递数据

D4,函数的定义

  1. 定义的内容
  • 指定函数的名字
  • 指定函数的类型,函数值的类型
  • 指定函数的参数名字和类型,以便在调用函数时向它们传递数据。对无参函数不需要
  • 指定函数的功能,应当完成什么操作,做什么,在函数体中解决
    • c语言规定,在函数中用到的所有函数,必须“先定义,后使用
  1. 定义无参函数
  • 类型标识符 函数名()
  • {
  • 声明部分
  • 语句部分
  • }
  1. 定义有参函数
  • 类型标识符 函数名(形式有参列表)
  • {
  • 声明部分
  • 语句部分
  • }
  1. 定义空函数
  • 类型标识符 函数名()
  • {}

D5.函数的参数

  1. 形式参数
  • 函数名后括弧中的变量名称为形式参数 (形参)
  1. 实际参数
  • 主调函数中调用一个函数时,函数名后面括弧的参数(实参)
  1. 关于形参和实参的说明
  • 在定义函数中指定的形参,在未出现函数调用时,它们并不占用内存中的存储单元。只有在发生函数调用时,函数max中形参才被分配内存单元。在调用解释后,形参所占的内存单元也被释放
  • 实参可以是常量,变量或表达式
  • 在被定义的函数中,必须指定形参的类型
  • 实参和形参的类型应相同或赋值兼容
  • 实参向形参的数据传递是单向“值传递”,只能由实参传给形参,而不能由形参传回来给实参。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用解释后,形参单元被释放,实参单元仍保留并维持原值

D6.函数的返回值

  • 类型表示符:函数返回值的数据类型
  • 函数返回值:return后面的括弧中的值作为函数待会的值(函数返回值)
    • 说明
      • 函数的返回值是通过函数中的return语句获得的
      • 函数的返回值应当属于某一个确定的类型,在定义函数时指定函数返回值的类型
      • 在定义函数时指定的函数类型一般应该和return语句中的表达式类型一致(如果不一致,则以函数类型为准)
      • 对于不带回值的函数,应当用“void”定义函数为“无类型”(空类型)。此时在函数体要么没有return语句,要么return语句为0

D7.函数调用的一般形式

  • 函数调用的一般形式:函数名(实参表列)
    • 说明
      • 如果调用无参函数,则“实参表列”可以,没有,但括弧不能省略
      • 如果实参表列包含多个实参,则各参数间用逗号隔开。实参与形参的个数应相等,顺序对应,类型应匹配
  • 函数参数
    • 函数调用作为一个函数的实参
  • 函数原型的一般形式
    • 函数类型 函数名(参数类型1,参数类型2.)
    • 函数类型 函数名(参数类型1 参数名1,参数类型2 参数名2)
      • 注意
      • 函数的“定义”和“声明”不是一回事
      • 函数的定义是指对函数功能的确立,包括指定函数名,函数值类型,形参及其类型,函数体等,它是一个完整的,独立的函数单位
      • 函数的声明的作用则是把函数的名字,函数类型以及形参的类型,个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查

D8.数组参数与数组

  1. 数组元素作函数参数
  • 数组元素可以作为函数的实参,与用变量作实参一样,是单向传递,“值传送”
  1. 数组名作函数参数
  • 可以用数组名作函数参数,此时并不是将该数组中全部元素传递给锁对应的形参,由于数组名代表数组的首地址,只是将数组的首元素的地址传递给所对应的形参,对应的形参应当是数组名或指针变量
    • 说明
      • 程序中用数组名作函数实参,函数average的形参也定义数组。
    • 注意
      • 主调函数和被调用函数分别定义数组,array是形参数组名,score是实参数组名,分别在所在函数中定义,不只是一方定义
      • 实参数组与形参数组类型应一直(float型)
      • 用数组作为函数参数,在调用函数时并不另外开辟一个存放形参数组的空间,这点和用变量作函数参数不同的,数组名代表数组的首元素的地址,用数组名作函数实参时,只是将实参数组的首元素的地址传给形参数组
  1. 变量的作用域
  • 局部变量
    • 在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外是不能使用这些函数
    • 主函数中定义的变量只在主函数中有效,而不因为在主函数中定义而在整个文件或程序中有效
    • 主函数也不能使用其他函数中定义的变量
    • 不同函数中可以使用相同名字的变量,它们代表不同的对象,互不干扰、
    • 形式参数也是局部变量
    • 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效,也称为“程序块”
  • 全局变量
    • 在函数外定义的变量称为外部变量,外部变量是全局变量(全程变量)。全局变量可以为本温江中其他函数所共用。它的有效范围从定义变量的位置开始到本源文件结束
      • 注意
        • 全局变量在程序的全部执行过程中都占用存储单元,而不是仅需要时才开辟单元
        • 使用全局变量过多,会降低程序的清晰性。在各个函数执行都可能改变外部变量的值
        • 它降低函数的通用性,因为函数在执行时要依赖于其所在的外部变量。
  1. 静态变量
  • 静态局部变量
    • 当函数中的局部变量的值在函数调用结束后不消失而保留原值时,该变量称为静态局部变量,用关键字static进行声明
      • 静态局部变量属于静态存储类别,在静态存储区内分配存单元。在程序整个运行期间都不释放
      • 对静态局部碧昂量是在编译时赋初值的。既只赋初值一次。
      • 如在定义局部变量时不赋初值的话,则对静态局部变量来说,编译时自动赋初值0(对数值型变量)或空字符(对字符变量)
      • 虽然静态局部变量在函数调用结束后仍然存在,但其他函数不能引用它

相关推荐

  1. c语言基础D

    2024-06-11 06:04:01       9 阅读
  2. c语言基础C

    2024-06-11 06:04:01       8 阅读
  3. 嵌入式学习第二——C语言基础10

    2024-06-11 06:04:01       28 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-11 06:04:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-11 06:04:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-11 06:04:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-11 06:04:01       18 阅读

热门阅读

  1. 计算引擎:Flink核心概念

    2024-06-11 06:04:01       8 阅读
  2. linux恶意IP溯源

    2024-06-11 06:04:01       13 阅读
  3. 国内12寸先进封装厂家的一些情况

    2024-06-11 06:04:01       9 阅读
  4. 异常(Exception)

    2024-06-11 06:04:01       8 阅读
  5. [力扣题解] 236. 二叉树的最近公共祖先

    2024-06-11 06:04:01       8 阅读
  6. vue manually select

    2024-06-11 06:04:01       7 阅读
  7. 初始化css

    2024-06-11 06:04:01       7 阅读
  8. VM渗透系统合集(下载链接)

    2024-06-11 06:04:01       10 阅读