函数定义:
定义函数前
1):确定函数的功能
2):确定函数的参数,是否需要参数,参数的个数,参数的类型
3):函数的返回值
①.是否需要返回值
②.需要返回值则定义为 例: int function(参数1,参数2,…) { }
③.不需要返回值则定义为 例: void function(void) { }
4):确定函数名
①.函数名以大小写英文字母或下划线开头,不能以数字开头
②.函数名一定要顾名思义(与函数实现功能相似,如:实现两个数之和 函数名定义为void sum(void) )
函数实现
//需要 返回值和参数的 函数定义
int sum(int a,int b,int c) { //函数的参数可以1个或多个 也可无
//内容
}
//不需要 返回值和参数的 定义
void sum(void) {
//内容
}
函数调用
如下代码就调用了自定义的 sum() 函数
int sum(int a, int b, int c) { //定义了一个函数用来实现三个数的和
int x = 0;
x = a + b + c;
return x; //定义为非void函数 必须要有返回值
}
int main(void) {
int x = 0;
int y = 0;
int z = 0;
cout << "输入3个整数输出他们的和:";
cin >> x>>y>>z;
cout << " x + y + z = " << sum(x,y,z)<< endl; //此处调用sun()函数
system("pause");
return 0;
}
函数声明
程序是从main函数开始执行的所以函数的定义需要放在main函数的上面
编译器是由上往下编译的
如果函数定义在main函数下面 如果main函数快里有调用这个函数则编译时会报错
出现下面报错 找不到标识符
解决方案:
- 把函数定义放在main函数前面
- 在main函数前进行函数声明
函数值传递
调用函数时,形参被赋值为对应的实参,
实参本身不会受到函数的影响!
#include <Windows.h>
#include <iostream>
using namespace std;
int sum(int a) { //(int a)形参:形式参数
//调用后int a; 相当于 int a=10 a被赋值为10
int x = 0;
x += a;
return x;
}
int main(void) {
sum(10); //(10) 实参:实际参数
system("pause");
return 0;
}
值传递图:
使用数组作为函数参数
void scorePrint(int x[], int n) { //int score[] 不是真正的数组 实际是一个指针
for (int i=0;i<n;i++) {
cout << x[i] <<endl; //可以作为数组来使用
}
}
目前还没学到指针 解释不清楚......跳过!
函数的默认参数
C语言不支持函数的默认参数,C++则支持
列:int sum(int a=10)
函数在调用时sum()
a的默认参数是10 ,
或函数在调用时sum(20)
那么a被重新赋值为20
函数重载
函数名重载:
函数名可以相同,
但是, 函数的参数(形参)绝不相同:
- 参数个数不同
- 或参数个数相同, 但是参数的类型不同
只有返回类型不同,不能构成函数重载
只有形参变量名不同, 不能构成函数重载.
注意: C语言不支持函数重载
:个人学习笔记小结.