什么是函数
(1) 系统函数:系统定义好的,方便我们完成某个功能(任务)的一组语句。
setw(n):设置域宽
sqrt(n):计算一个数的平方根
max(a,b):返回两个数的最大值
(2) 定义:为了实现某个功能(任务)而打包在一起的一组语句。
现实生活中,为了实现一个任务,会将一组动作打包成一个机器,这个机器就是一个"函数",例如洗衣机、豆浆机等
和数学中的函数有些区别,编程世界的函数(function)可以简单理解为“功能”。
为什么要定义函数?
(1) 代码重用,同一个函数可以被一个或多个函数调用任意多次,从而减少重复代码的编写。
(2) 模块化编程,一个程序可以分解成若干个结构清晰、功能独立、调试方便的函数。
函数的定义和调用
main就是每个程序都有的主函数
// 定义函数
返回类型 函数名(参数类型1 参数名1,....参数类型n 参数名n){
函数体
return 返回值;
}
// 调用函数
函数名(实参)
- 函数只有被调用时才开始执行
- 函数名是标识符,命名规则同变量名
- 函数的数据类型是返回值类型,如果没有返回值为 void 类型
- 形式参数简称形参,可以为空,是函数定义时的参数;实际参数简称实参,是函数调用时传递的参数;形参与实参必须一致
无参数无返回值函数
void(虚空、空) 是一个特殊的数据类型,作为函数的返回值的意思为这个函数不返回任何内容,只是执行一段代码
void print(){
cout << "Hello World" << endl;
}
print();
有参数无返回值函数
void tangshi(int n){
if(n == 1)
cout << "静夜思" << endl;
else if(n == 2)
cout << "春晓" << endl;
else
cout << "输入有误" << endl;
}
tangshi(1);
tangshi(2);
有参数有返回值函数
int add(int a, int b){
return a + b;
}
int r = add(1, 2);
cout << "r = " << r << endl;
cout << add(3, 4) << endl;
函数调用过程
- 当调用一个函数时,程序会暂停当前的执行,跳转到被调用的函数,并在函数执行完成后返回到调用它的地方,继续执行程序。
值传递和引用传递
函数传值参数仅仅是形参对实参的拷贝,形参变化不会改变实参。
函数传引用参数是传递实参本身,形参变化会同步改变实参。
#include <iostream> using namespace std; void swap1(int a, int b){ int t = a; a=b; b=t; cout<<"函数内部: "<<a<<" "<<b<<endl; } void swap2(int &a, int &b){ int t = a; a = b; b = t; } int main() { int a=1,b=2; //swap1(a, b); //值传递 swap2(a, b);//引用传递 cout<<"函数外部:"<<a<<" "<<b<<endl; return 0; }
函数题型
判断质数
bool isPrime(int n){
if(n < 2) return false;
for(int i = 2; i <= n / i; i++)
if(n % i == 0)
return false;
return true;
}