函数是C语言的第二个重点
#include <stdio.h>
//x,y 叫形式参数,当被调用时为x,y分配空间,调用结束后是否其空间
void max(int x, int y) {
if(x > y)
printf("%d\n", x);
else
printf("%d\n", y);
}
int main(void) {
int a = 1, b =4, c =9, d = 3, e = 40, f = 33;
max(a,b);
max(c,d);
max(e,f);
return 0;
}
一、为什么需要函数?
- 避免了重复性操作
- 有利于程序的模块化
二、什么是函数?
逻辑上:能够完成特定功能的独立代码块
物理上:
- 能够接收数据【也可以不接收数据】
- 能够对接收的数据进行处理
- 能够将数据处理的结果返回【当然也可以不返回任何值】
总结:
- 函数是个工具,它是为了解决大量类似问题而设计的,
- 函数可以当做一个黑匣子
三、如果定义函数
返回值类型 函数名称(参数)
{
函数的执行体;
}
-
函数定义的本质是详细描述函数之所以能够实现某个特定功能的具体方法。
-
return 表达式
1> 终止被调函数,向主调函数返回表达式的值
2> 如果表达式为空,则只终止函数,不向主调函数返回值
3> break是用来终止循环和switch的,return是用来终止函数的
void f() {
return; //return 只用来终止函数,不向主调函数返回任何值
}
int f2() {
return 1; //1. 终止函数,2. 向主调函数返回数值:1
}
- 函数的返回值类型也叫函数的类型,因为如果:函数的返回值类型和函数return的值的类型不同,那么以函数定义的为准。
#include <stdio.h>
int f(void) {
return 10.5;
}
int main(void) {
double k = 5.67;
k = f();
printf("%lf\n",k); //返回值是10.000
return 0;
}
三、函数的分类
有参函数 和 无参函数
有返回值函数 和 无返回值函数
库函数 和 用户自定义函数
普通函数 和 主函数(main函数)
- 一个程序必须有一个主函数
- 主函数可以调用普通函数,但普通函数不可以调用主函数
- 普通函数可以互相调用
- 主函数是程序的入口,也是程序的出口
bool isPrime(int val) {
int i ;
for( i = 2; i < val; i++)
if(val %2 ==0)
break;
if(i == val)
return true;
else
return false;
}
注意的问题
- 函数调用和函数定义的顺序
如果函数调用写在了函数定义前面,则必须加前置声明
- 函数前置声明
- 告诉编译器即将可能出现的若干字母代表的是一个函数。
- 告诉编译器即将可能出现的若干字母代表的函数的形参和返回值的具体情况
- 函数声明一个语句,末尾必须加分号;
- 对库函数的声明是通过 #include <库函数所在文件名.h>
函数的声明:
#include <stdio.h>
//从上往下编译,下面的方法无法被上面的方法调用,除非先声明
void f(void); //函数的声明
int main(void) {
f();
return 0;
}
void f(void) { //函数的定义
printf("This is f method");
}
形参和实参
- 个数 相同
- 位置一一对应
- 数据类型必须互相 兼容
函数是C语言的基本操作单位,类是Java,C#,C++的基本单位
常用的系统函数
求x的平方根:double aqrt(double x);
求x的绝对值:int abs(int x);
求x的绝对值:double fabs(double x);
《turboc2.0实用大全》
专题:递归 :(参见数据结构)
递归涉及到栈的知识。
A 调用 A 等同于 A 调用B
A 调用B 得了解栈
变量的作用域和存储方式
按作用域分
-
全局变量
-
局部变量
按变量的存储方式
静态变量
自动变量
寄存器变量
网友评论