c++语言程序设计

<第三章:函数>

一、函数的定义与使用:
调用其他函数的函数称为主调函数,被其他函数调用的函数称为被调函数
一个c++程序可以由一个主函数和若干子函数构成,由主函数调用子函数,子函数还可以再调用其他子函数。主函数是程序执行的起点。
2.函数定义的语法形式
类型说明符 函数名(含类型说明的形式参数表)
{
语句序列
}
eg:double power (double x,int n)//计算x的n次方
{
double val=1.0;
while(n–)
val*=x;
return val;
}
3.形式参数
形参作用:实现主调函数与被调函数之间的联系。
通常将函数所处理的数据、影响函数功能的因素或者函数处理的结果作为形参。
eg:(int i)int类型标识符表示形参类型,i为形参名
4.函数的返回值和返回值的类型
函数可以有一个返回值,函数的返回值是需要返回给主调函数的处理结果。 return 表达式;
一个函数也可以不将任何值返回给主调函数,此时类型标识符为void。void main{}
main函数的返回值最终传递给操作系统
5.函数的调用形式
a. 在定义一个函数之后,可以直接调用这个函数;如果想要在定义之前使用它,则需要在调用函数之前添加该函数的函数原型声明。函数原型声明形式:类型说明符 函数名(含类型说明的形参表)
eg:double power(double x,int n);
b.声明完之后便可以按如下形式调用子函数
函数名(实参列表)
c. 函数调用作为一条语句,可以无返回值;出现在表表达式中,必须有一个明确的返回值
6.嵌套调用:如果函数1调用了函数2,函数2再调用函数3。
eg:两整数的平方和。
fun1:求一个整数的平方函数/fun2:平方和函数
int fun1(int m){return m*m;}
int fun2(int x,int y){ return fun1(x)+fun2(y);}
int main{…}
7.递归调用:函数可以直接或者间接调用自身
eg:阶乘//计算n的阶乘
unsigned fac(unsigned n){
unsigned f;
if(n==0) f=1;
else f=fac(n-1)*n;
return f;
}
8.函数的参数传递:形参与实参结合(形实结合)的过程,形实结合的方式有值传递和引用传递。
a.值传递:发生函数调用时,给形参分配空间,直接将实参的值给形参。这一过程为单向传递,一旦形参获得了值便于实参脱离关系。
子函数中对形参做的改变对主函数中的实参无效。
b.引用传递:用引用作为形参,在函数调用的时候发生的参数传递。<引用是一种特殊类型的变量,可以被认为是另一个变量的别名>
void swap(int &a,int &b)
{int t=a;a=b;b=t;}
int main{…}
二、内联函数
1.语法形式:inline 类型说明符 函数名(含类型说明的形参表)
{
语句序列
}//定义函数时加关键字inline
2.说明:内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。
3.适用对象:对一些功能简单、规模较小又使用频繁的函数。现代编译器中,没有用inline修饰的函数也有可能被编译为内联。若将一个复杂函数定义为内联函数,反而会造成代码膨胀,增大开销,多数编译器会将其转换为普通函数来处理。
三、带默认形参值的函数
1.函数在定义前可以预先声明默认的形参值。调用时给出实参,则用实参初始化形参,如果没有给出实参,则采用预先声明的默认形参值。
举例:int add(int x=5,y=6){ //声明默认形参量
return x+y;
}
int main(){
add(10,20); //用实参来初始化形参,实现10+20
add(10); //形参x采用实参值10,y采用默认值6,实现10+6
add(); //x和y都为默认值,实现5+6
}
2.注意:
a.有默认值的形参必须在形参列表的最后
int add(int x=1,int y=2,int z)//错误
b.在相同的作用域内,不允许在同一个函数的多个声明中对同一参数的默认值重复定义,即使前后定义的值相同也不行。
int add(int x=5,int y=6);//默认形参值在原型函数中给出
int main(){add();return0;}
int add(int x/=5/,int y/=6/){ //不能再出现形参,可以注释
return x+y;}
四、函数重载:两个以上的函数,具有相同的函数名但是形参的个数或者类型不同,编译器根据实参和形参的类型及个数的最佳匹配,自动确定调用哪个函数。//整数实数
注意:a.重载函数的形参必须不同:个数不同或者类型不同。
eg:int add(int x,int y)
float add(float x,float y)
b.不要将功能不同的函数定义为重载函数。
c.使用当具有默认形参值的函数重载形式时,防止二义性。
五、c++系统函数
1.系统函数的原型声明已经全部由系统提供了,分类保存在不同的头文件中,我们需要用include指令嵌入相应的头文件,然后便可以使用系统函数。eg:#include
2.注意:编译环境提供的系统函数分为标准c++函数非标准c++函数非标准c++函数指当前操作系统或编译环境中所特有的系统函数。优先使用标准c++函数,各种编译环境普遍支持,具有很好的移植性;在处理和系统操作有关的事物等时,需要使用非标准c++函数。
3.查阅常用标准c++函数的原型、头文件和用法网站:http://www.cppreference.com

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值