台州市建站公司,网站免费建设推荐,常州新北区网站建设,网站更新步骤文章目录6 函数6.1 概述6.2 函数的定义6.3 函数的调用6.4 值传递6.5 函数的常见形式6.6 函数的声明6.7 函数的分文件编写6 函数
6.1 概述
作用#xff1a;将一段经常使用的代码封装起来#xff0c;减少重复代码。
一个较大的程序#xff0c;一般分为若干个程序块#xf…
文章目录6 函数6.1 概述6.2 函数的定义6.3 函数的调用6.4 值传递6.5 函数的常见形式6.6 函数的声明6.7 函数的分文件编写6 函数
6.1 概述
作用将一段经常使用的代码封装起来减少重复代码。
一个较大的程序一般分为若干个程序块每个模块实现特定的功能。
乐趣
C自带了一个包含函数的大型库标准的ANSI库加上多个C类但真正的乐趣在于编写自己的函数另外如果要提升效率可更深入学习STL和BOOST C提供的功能。
6.2 函数的定义
函数的定义一般主要有5个步骤
返回值类型一个函数可以返回一个值函数名给函数起个名称参数表列使用该函数时传入的数据函数体语句花括号内的代码函数内需要执行的语句return表达式和返回值类型挂钩函数执行完后返回相应的数据
语法
返回值类型 函数名
{函数体语句return 表达式
}例如加法函数 关于return
对于有返回值的函数必须使用return语句以便将值返回给调用函数。值本身可以是常量、变量也可以是表达式只是其结果必须为typeName类型或可以被转换为typeName例如在声明的时候就说返回double结果最后return的是一个int那么这个int将会被强转为double。然后函数就会把值返回给调用函数。
C对返回值的类型有一定的限制不能是数组但是可以是其他任何类型比如整数浮点数甚至是结构和对象。
示例定义一个加法函数实现两个数相加
#include iostream
using namespace std;int add(int x,int y) {int c x y;return c;
}int main()
{int a 1;int b 2;int result add(a, b);cout a和b加起来为 result endl;system(pause);return 0;
}6.3 函数的调用
功能使用定义好的函数
语法函数名 (参数)
示例
#include iostream
using namespace std;//函数定义
int add(int num1, int num2)//定义中的num1num2称为形式参数简称形参
{int sum num1 num2;return sum;
}int main()
{int a 10;int b 10;//调用add函数//a和b称为实际参数简称实参int sum add(a, b);cout sum sum endl;int sum2 add(100, 500);cout sum2 sum2 endl;system(pause);return 0;}6.4 值传递
所谓值传递就是函数调用时实参将数值传入给形参
值传递时如果形参发生改变并不会影响实参。
示例
#include iostream
using namespace std;//值传递
//定义函数实现两个数字进行交换//如果函数不需要不需要返回值声明的时候可以写一个void
void swap(int num1, int num2)
{cout 交换前 endl;cout num1 num1 endl;cout num2 num2 endl;int temp num1;num1 num2;num2 temp;cout 交换后 endl;cout num1 num1 endl;cout num2 num2 endl;//return; 返回值不需要的时候可以不写return
}int main()
{int a 10;int b 20;cout a a endl;cout b b endl;//当我们函数的形参发生改变的时候并不会影响实参swap(a, b);cout a a endl;cout b b endl;system(pause);return 0;}值传递的原理 【总结值传递时形参是修饰不了实参的。】 6.5 函数的常见形式
常见的函数样式有4种
无参无反有参无反无参有反有参有反
示例
#include iostream
using namespace std;//函数常见形式
//1、无参无反
void test01()
{cout this is test01 endl;
}//2、有参无返
void test02(int a)
{cout this is test02 a a endl;
}//3、无参有反
int test03()
{cout this is test03 endl;return 1000;
}//4、有参有反
int test04(int a)
{cout this is test04 a a endl;return a;
}int main()
{test01();//有参无返函数调用test02(100);//无参有反函数调用int num1 test03();cout num1 num1 endl;//有参有反函数调用int num2 test04(10000);cout num2 num2 endl;system(pause);return 0;
}6.6 函数的声明
作用告诉编译器函数名称以及如何调用函数函数的实际主体可以单独定义。
函数的声明可以多次但是函数的定义只能有一次
【注在有些书上函数声明也叫函数原型。】
示例
#include iostream
using namespace std;//函数的声明
//比较函数实现两个整型数字进行比较返回较大的值//提前告诉编译器函数的存在可以利用函数的声明
//函数的声明
//声明可以写多次但是定义只能写一次
int max(int a, int b);int main()
{int a 10;int b 20;cout max(a, b) endl;system(pause);return 0;
}//定义
int max(int a, int b)
{return a b ? a : b;
}6.7 函数的分文件编写
作用让代码结构更加清晰
函数分文件编写一般有4个步骤
创建后缀名为.h的头文件创建后缀名为.cpp的源文件在头文件中写函数的声明在源文件中写函数的定义
示例
#include swapfunc.h
using namespace std;
//函数的定义
void swapfunc(int a, int b)
{int temp a;a b;b temp;cout a a endl;cout b b endl;
}#pragma once
#include iostream
void swapfunc(int a, int b);#include iostream
#include swapfunc.h
using namespace std;int main()
{int a 10;int b 20;swapfunc(a, b);system(pause);return 0;
}