注:该博文内代码均为C++编写
C语言中,存在不少现成的可用函数,如sqrt(square root),pow(power),strlen(string length)等;但在实际运用中,我们有时仍会需要自行定义一些函数,以及......“合理地”偷懒⁄(⁄⁄•⁄ω⁄•⁄⁄)⁄
也正因为C语言中函数的广泛性,我们才有了这位省时省力的多面手,即便面对冗杂繁复的机械性任务,也能轻!松!解!决!
到底能干嘛?
少些变量
进行部分运算/操作(比如“交换”)时,会需要定义一个中间量,比如temp,这个在上次已经提到过了→一维数组中,实现对任意元素的交换_只冈不布奥的博客-CSDN博客
现在,只需要事先声明exchange ↓
#include<iostream>
using namespace std;
int a= 0, b= 0;
void exchange(int a, int b)
{
int p;
if(a < b)
{
p = a; a = b ; b = p;
}
}
然后,在main()里调用即可 ↓
int main()
{
cin>>a>>b;
exchange(a,b);
cout<<a<<" "<<b<< endl;
return 0;
}
省点if
尽管C中已有abs()代表取绝对值(absolute),但为了阐述方便,我们只能“假装”现在就根本“没有”和绝对值有关的函数,那么取绝对值时,我们只能......↓
#include <iostream>
using namespace std;
int main()
{
int m = -123, resultA= 0;
if(m < 0)
return(-m);
else
return m;
cout << resultA;
int n = -456, resultB= 0;
if(n < 0)
return(-n);
else
return n;
cout << resultB;
//......这里只有m,n两个变量,其实实际情况还会有更多
return 0;
}
一个变量,一个if...else,一个变量,再一个if...else······我们当然不希望写这样的代码(哪怕复制粘贴也能实现)
相比之下,声明absolute()之后,只用打出result = absolute(m)就行了(*/ω\*)
#include <iostream>
using namespace std;
int absolute(int n)
{
if(n < 0)
return(-n);
else
return n;
}
int main()
{
int m = -123, result= 0;
result = absolute(m);
cout << result;
return 0;
}
懒得打字(?)
哪怕只是纯粹的不想打字,甚至连复制粘贴都不想用,函数也能救你于水火之中(除非你这函数名字长到离谱)
示例:“系统报错”函数
#include <iostream>
using namespace std;
void show()
{
cout<<"***********************************"<<endl;
cout<<"* System error has occurred. *"<<endl;
cout<<"*Please contact the administrator.*"<<endl;
cout<<"* Sorry for the inconvenience. *"<<endl;
cout<<"***********************************"<<endl;
}
int main()
{
show();//没错,至少省了几个cout(*/ω\*)
return 0;
}
如果出错的情况有很多,不要紧,直接打个show()就完事!(毕竟系统报错只有一种)
输出结果长这样 ↓
***********************************
* System error has occurred. *
*Please contact the administrator.*
* Sorry for the inconvenience. *
***********************************
但前提是,你已经声明过它了↙
函数的原型/声明
函数原型(Signature,也可译为“签名”),即函数的返回类型,函数名,和参数表构成的一个符号串(参数可不写名字)
→ bool checkPrime(int) ←
函数的声明一般在main()的前面(其实main本身也是个函数),就比如刚才提到的absolute(),exchange()等,都是在main()前声明。
在C语言中,函数声明就是函数原型,这倒省了不少麻烦(*・ω-q)
函数的调用/执行
我们所声明的函数,一般会在main()内使用;而每个函数会单独占用空间,并在main()中进行调用。
调用过程十分简洁(如abs()),只需要单独打出函数名,括号内套进参数/变量即可(不套也行)
e.g:
- exchange(a,b)
- abs(m)
- show()
附:常见的缩写方式
- 保留开头:abs(absolute)pow(power)int(integer)
- 保留词组首尾/合并无声音节:sqrt(square root)
- 保留词组开头:atoi(array to int)