C语⾔的函数到底是什么
⽬录
前⾔
什么是函数?
写了⼀段⽜顿迭代法求平⽅根的代码,程序⾥⾯⽆数地⽅都要求平⽅根, 难道需要的地⽅都把这段代码拷贝⼀遍?
⼀个数⼗万⾏的程序,都写在 main⾥⾯? 数百个程序员如何合写⼀个 main?
为什么需要函数?
如何定义函数?
计算机函数和数学定义中的函数有什么区别?
如何使⽤函数?
提⽰:以下是本篇⽂章正⽂内容,下⾯案例可供参考
⼀、什么是函数?
1.函数是⼀个固定的⼀个程序段,或称其为⼀个⼦程序。
“函数” 可以将实现了某⼀功能,并需要反复使⽤的代码包装起来形成⼀个功能模块(即写成⼀个“函数”),那么当程序中需要使⽤该项功能时,不需要把这段代码重新再写⼀遍,只需写⼀条语句,调⽤实现该功能的 “函数”即可 。
2.特征:有三部分组成,除了可以实现固定运算功能,还有⼀个⼊⼝和⼀个出⼝
所谓⼊⼝,就是函数所带的各个参数,我们可以通过这个⼊⼝,把函数的参数值代⼊⼦程序,供计算机处理;
所谓出⼝,就是指函数的函数值,在计算机求得之后,由此⼝带回给调⽤它的程序。
⼆、怎么使⽤函数?
1.函数的定义
返回值类型 函数名(参数1类型 参数1名称, 参数2类型 参数2名称……)
{
语句组(即“函数体”)
}
如果函数不需要返回值,则“返回值类型”可以写“void”
由函数类型、函数名、形参列表(形式参数的类型和名称)、函数体(语句和返回值)组成
2.函数的声明
返回值类型 函数名(参数1类型 参数1名称, 参数2类型 参数2名称……);
注意是⼀个完整的说明语句,所以分号不能丢。
3.函数的调⽤和return语句
调⽤函数:
函数名(参数1,参数2,……);
对函数的调⽤,也是⼀个表达式。函数调⽤表达式的值,由函数内部的 return语句决定。return语句语法如下:
return 返回值;
return语句的功能是结束函数的执⾏,并将“返回值”作为结果返回。“ 返回值”是常量、变量或复杂的表达式均可。如果函数返回
值类型为 “void”,return语句就直接写: return ;
return 语句作为函数的出⼝,可以在函数中多次出现。多个return语句的 “返回值”可以不同。在哪个return语句结束函数的执⾏,函数的返回值就和哪个return语句⾥⾯的“返回值”相等
4.函数定义和声明的辨析
正如变量必须先声明后使⽤⼀样,函数也必须先声明后调⽤。C语⾔编译系统是由上往下编译的,如果被调函数在主调函数之前被定义,可以直接调⽤函数。⽽⼀般被调函数放在主调函数后⾯的话(如果习惯main函数在前,被调函数在后的话),前⾯就该有声明。
否则C由上往下的编译系统将⽆法识别。
声明时,参数名称可以省略。函数声明也称为“函数的原型”
函数的声明可以与定义分离,⼀个函数只能被定义⼀次,但可以声明多次。
根本区别时声明式不开辟内存的,⽽定义开辟内存
⼆、函数使⽤⽰例
1.Max函数
代码如下(⽰例):
#include<iostream>//C++中⽤于数据的流式输⼊与输出的头⽂件
using namespace std;
int Max(int a,int b)//形参需要与实参类型相同
{
if(a>b){
return a;//需要分号
}
else return b;
}
int main()
{
int n=Max(4,6);//需要分号//判断4和6中的较⼤值//调⽤函数只是⼀个⼿段,⽬的是得到⼀个结果
cout<<n<<","<<Max(20,n)<<endl; //是cout不是cont
return 0;
}
2.判断是否是素数false是什么函数
代码如下(⽰例):
#include<iostream>
using namespace std;
bool IsPrime(unsigned int n)//bool布尔型变量,返回ture或flase
{
if(n<=1)
return false;
for(int i=2; i<n; ++i)
if(n%i==0)
return false;
return true;//不是ture
}
int main()
{
cout<<IsPrime(2)<<","<<IsPrime(4)<<","<<IsPrime(5);
return 0;
}
3.已知三⾓形三个顶点位置, 求边长
代码如下(⽰例):
#include<iostream>
using namespace std;
#include <iostream>
using namespace std;
#define EPS 0.001 //⽤以控制计算精度
double Sqrt(double a)
{
//求a的平⽅根
double x = a/2,lastX = x + 1 + EPS; //确保能够进⾏⾄少⼀次迭代while( x - lastX > EPS || lastX - x > EPS) {
//只要精度没有达到要求,就继续迭代
lastX = x;
x = (x + a/x)/2;
}
return x;
}
double Distance(double x1,double y1,double x2,double y2) { //求两点(x1,y1),(x2,y2) 的距离
return Sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
int main()
{
int x1,y1,x2,y2,x3,y3;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3;
cout << Distance(x1,y1,x2,y2) << endl;
//输出(x1,y1)到(x2,y2)距离
cout << Distance(x1,y1,x3,y3) << endl;
cout << Distance(x3,y3,x2,y2) << endl;
return 0;
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论