什么是函数?
一个 C++ 程序无论大小,都由一个或者多个函数组成,而且其中必须有且只有一个函数 main() ,称之为主函数 ,由函数 main() 调用其他函数来完成程序的特定功能。当然,其他函数之间也可以按照规则互相调用。
main() 相当于一个集团,其下可以有众多子公司或者分公司,每个子公司或者分公司完成某一项特定业务,每个函数就是完成特定业务,所有函数由 main() 统一调度。
C++ 中的函数由一段相对独立的代码组成,这段代码能实现某一项具体、独立、完整的功能。函数在程序设计中的作用主要有两个,一是代码重用,二是问题分解。
代码重用是保证同一个函数可以被一个或多个函数调用任意多次,从而减少重复代码的编写。
问题分解可以保证一个大的程序(或者说软件),按照模块化编程思想,由大化小,分解成若干个结构清晰、功能独立、调试方便的函数,甚至给若干人合作完成,从而提高开发效率。
函数的定义和调用
// 定义函数
typeName functionName(parameterList){
return value;
}
// 调用函数
functionName(parameterList)
- 函数只有被调用时才开始执行
- 函数不允许嵌套定义,但是运行嵌套使用
- 函数名是标识符,命名规则同变量名
- 函数的数据类型是返回值类型,如果没有返回值为 void 类型
- 形式参数简称形参,可以为空,是函数定义时的参数;实际参数简称实参,是函数调用时传递的参数;形参与实参必须一致
无参数无返回值函数
void print(){
cout << "Hello cat1" << endl;
cout << "Hello cat2" << endl;
cout << "Hello cat3" << endl;
cout << "Hello cat4" << endl;
cout << "Hello cat5" << endl;
cout << "Hello cat6" << endl;
}
print();
有参数无返回值函数
void jrj(string rou){
if(rou == "牛肉")
cout << "牛肉丝" << endl;
else if(rou == "羊肉")
cout << "羊肉丝" << endl;
else
cout << "请放入合法的肉" << endl;
}
jrj("牛肉");
jrj("羊肉");
有参数有返回值函数
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;
}
void swap3(int& a, int& b){
int t = a;
a = b;
b = t;
}
int main() {
int a = 1, b = 2;
// swap1(a, b);
// swap2(&a, &b);
swap3(a, b);
cout << "函数外部:" << a << " " << b << endl;
return 0;
}
判断质数
bool is_prime(int n){
if(n < 2) return false;
for(int i = 2; i <= n / i; i++)
if(n % i == 0)
return false;
return true;
}