目录
一.函数
函数是一块代码,接受零个或多个参数,做一件事,并返回零个或一个值,理解想象成y=f(x)
调用函数
函数名(参数值)
- ()起到了表示函数调用的重要作用
- 即使没有参数也需要()
- 如果有参数,则需要给出正确的数量和顺序
- 这些值会被按照顺序依次用来初始化函数中的参数
二.函数返回
1.从函数中返回值
- return停止函数的执行,并送回一个值
- return;
- return表达式;
注:return可以多个,但不符合单一出口,不好修改
2.没有返回值的函数
- void函数名(参数表)
- 不能使用带值得return
- 可以没有return
- 调用的时候不能做返回值的赋值
注:如果函数有返回值,就必须使用带值得return
三.函数的先后关系
#include <stdio.h> void sum(int begin,int end); int main() { sum(1,10); sum(20,30); sum(35,45); return 0; } void sum(int begin,int end) { int i; int sum =0; for ( i=begin;i<=end; i++) { sum += i; } printf("%d到%d的和是%d\n",begin,end,sum); }
像这样把sum()写在上面,是因为c的编译器自上而下顺序分析代码
在看到sum(1,10)的时候,它需要知道sum()的样子,也就是sum()要几个参数,每个参数的类型如何,返回什么类型
函数原型
- 函数头,以分号“;”结尾,就构成了函数的原型
- 函数原型的目的是告诉编译器这个函数长什么样
- 名称
- 参数(数量及类型)
- 返回类型
- 旧标准习惯把函数原型写在调用它的函数里面
- 现在一般写在调用它的函数前面
四.参数传递
如果函数有参数,调用函数时必须传递给它数量、类型正确的值
可以9传递给函数的值是表达式的结果,这包括:字面量,变量,函数的返回值,计算的结果
#include<stdio.h> void swap(int a,int b); //形参 //参数 int main() { int a=5; int b=6; swap(a,b); //实参 //值 printf("a=%d b=%d\n",a,b); return 0; } void swap(int a,int b) //形参 //参数 { int t = a; a = b; b = t; }
这样的代码不能交换a和b
注:c语言在调用函数时,永远只能传值给函数
传值
每个函数有自己的变量空间,参数也位于这个独立的空间中,和其他函数没有关系