C语言程序设计A

周哲泓、文晟、马万仑

目录

  • 1 绪论
    • 1.1 为什么学习C语言
    • 1.2 C语言概述
    • 1.3 基本语法单位
    • 1.4 C语言基本程序结构
    • 1.5 Visual C++6.0介绍
    • 1.6 测试
  • 2 数据类型
    • 2.1 基本数据类型
      • 2.1.1 整型
      • 2.1.2 浮点型
    • 2.2 常量
    • 2.3 变量
    • 2.4 运算符与表达式
      • 2.4.1 算术运算符和算术表达式
      • 2.4.2 赋值运算符和赋值表达式
      • 2.4.3 关系运算符和关系表达式
      • 2.4.4 逻辑运算符和逻辑表达式
      • 2.4.5 位运算符和位表达式
      • 2.4.6 条件运算符和条件表达式
      • 2.4.7 逗号运算符和逗号表达式
      • 2.4.8 其他运算符
    • 2.5 数据的输入输出
    • 2.6 章节测试
  • 3 选择结构程序设计
    • 3.1 章节介绍
    • 3.2 关系运算符和关系表达式
    • 3.3 逻辑运算符和逻辑表达式
    • 3.4 if分支语句
    • 3.5 条件运算符和条件表达式
    • 3.6 switch多路开关语句
    • 3.7 实验方法
    • 3.8 本章小结
    • 3.9 选择结构程序设计电子课件
    • 3.10 选择结构程序设计视频推荐
    • 3.11 章节测试
  • 4 循环结构程序设计
    • 4.1 章节介绍
    • 4.2 while和do...while循环语句
    • 4.3 for 循环语句
    • 4.4 break和continue语句
    • 4.5 goto语句
    • 4.6 嵌套循环结构
    • 4.7 实验方法
    • 4.8 本章小结
    • 4.9 电子课件
    • 4.10 推荐视频
    • 4.11 章节测试
  • 5 数组
    • 5.1 一维数组
    • 5.2 二维数组
    • 5.3 字符数组与字符串
    • 5.4 章节测试
    • 5.5 实验方法
    • 5.6 电子课件
    • 5.7 推荐视频
  • 6 函数
    • 6.1 函数概述
    • 6.2 函数的定义
    • 6.3 函数的参数和返回值
    • 6.4 函数的调用
    • 6.5 函数的嵌套和递归调用
    • 6.6 数组作为函数的参数
    • 6.7 局部变量和全局变量
    • 6.8 变量的存储类别
    • 6.9 内部函数和外部函数
    • 6.10 实验
    • 6.11 电子课件
    • 6.12 章节测试
  • 7 编译预处理
    • 7.1 宏定义
      • 7.1.1 不带参数的宏定义
      • 7.1.2 带参数的宏定义
    • 7.2 “文件包含”处理
    • 7.3 条件编译
    • 7.4 推荐视频
    • 7.5 电子课件
  • 8 指针
    • 8.1 指针的基本概念
      • 8.1.1 变量的地址
      • 8.1.2 指针变量的定义
      • 8.1.3 指针变量的引用
    • 8.2 指针与一维数组
      • 8.2.1 指向一维数组的指针变量
      • 8.2.2 通过指针引用一维数组元素
      • 8.2.3 指针使用的几个细节
    • 8.3 指针与字符串
      • 8.3.1 使用指针处理字符串
      • 8.3.2 字符型指针变量作函数参数
      • 8.3.3 字符指针变量与字符数组的区别
    • 8.4 指针与二维数组
      • 8.4.1 二维数组的指针
      • 8.4.2 行指针变量
      • 8.4.3 二维数组的指针作函数参数
    • 8.5 指针数组与多级指针
      • 8.5.1 指针数组
      • 8.5.2 多级指针的概念
    • 8.6 指针与函数
      • 8.6.1 指针变量作为函数的参数
      • 8.6.2 函数的指针
      • 8.6.3 返回指针值的函数
    • 8.7 main函数的参数
      • 8.7.1 main函数参数的概念
      • 8.7.2 main函数参数的处理
    • 8.8 程序设计举例
    • 8.9 实验
    • 8.10 电子课件
    • 8.11 参考视频
函数的调用

一、函数调用

函数在定义完后就可以被调用了。

如果函数定义中有形参,那么在调用时,应传递实际参数(实参)。

函数调用的一般形式如下:

函数名(实参列表)

int main( )

{ int n;

  for (n=301; n<=499; n++) 

        if (prime(n)==1)     

          printf ("%5d",n) ;

  printf("\n");

  return 0;

}

若调用无参函数,则没有实参列表,但小括号不能省略。

若实参列表包含多个实参,则各参数间用逗号隔开。

实参与形参的个数应相等,类型应一致。

实参与形参应按顺序一一对应,实参传递数据给形参。

二、函数的调用方式

按函数在程序中出现的位置来划分,函数调用方式可以有3种。

(1) 函数语句。把函数调用作为一个语句,

例如:“fun(ch);”,这时无需函数返回值,只是要求函数完成一定的操作。

(2) 函数表达式。函数调用出现在表达式中。

例如:“sum=sum+fnum(k);”,函数调用“fnum(k)”出现在表达式中,这时要求函数返回一个值参加表达式的运算。

(3) 函数的参数。函数调用作为另一个函数的实参。

例如:putchar(getchar())。

三、对被调用函数的声明

一个函数在被调用之前必须已被定义,此外还应该在调用之前对函数进行声明。

声明就是向编译系统声明将调用的函数的相关信息

如果在调用函数之前未进行声明,则编译系统认为此函数不存在,从而导致编译出错。

四、函数调用需要具备的条件

(1) 被调用函数必须是已经存在的函数(库函数或用户自定义函数)。

(2) 若调用库函数,一般在文件开头使用#include命令将库函数所在文件包含进来。

(3) 若使用用户自定义的函数,而且该函数与调用它的函数在同一个文件中,一般还应该在调用它的函数中或主函数之前对被调用的函数进行声明。

五、函数声明的一般形式如下:

类型标识符  被调用函数的函数名(参数类型1, 参数类型2, …);

类型标识符  被调用函数的函数名(参数类型1 参数名1, 参数类型2 参数名2, …);

上面两种函数声明的形式均可。前一种为基本形式。声明的后一种形式,加上了参数名,这样便于阅读程序。

 六、函数调用的过程如下:

(1) 传递参数值。调用有参函数时,首先计算各个实参表达式的值、为所有的形参分配内存单元,然后按顺序把实参的值传递给对应的形参。

(2) 进入函数的声明部分。执行声明部分,为函数体内的局部变量分配内存单元。

(3) 执行函数中的语句,实现函数的功能。按顺序执行函数的语句,当遇到return语句或最外层的“}”时,释放形参和本函数体内定义的局部变量所占用的内存空间,返回到调用本函数的上级函数。