C++语言基础知识学习笔记(三)

学习了C++的数据类型和控制语句,现在学习函数。

通常情况下,我们将相对独立的,经常使用的功能抽象为函数。函数编写好以后,可以被重复使用。

从上面我们可以看出,使用函数有利于代码重用,提高效率。

函数的定义类型标识符 函数名(形式参数表)
{
    语句
}
类型标识符规定了函数的类型,也就是函数返回值的类型,有return语句给出,无返回值的函数类型标识符为void,不必写return语句
函数的声明调用之前,首先要在主调函数中声明函数原型,形式如下:
类型说明符 被调函数名(含类型的形参表)
 
函数的调用声明后,可以按照以下格式调用:
函数名 (实际参数表)
函数的调用,可以作为一条语句,这时,函数可以没有返回值
函数的调用出现在表达式中,这时就必须有一个明确的返回值
注意如果是在所有函数之前声明了函数,则在程序任何地方都可以调用。
如果是在主调函数内部声明,则只在这个函数内部有效。
 

 

例:编写一个求x的n次方的函数。

算法,x的n次方,就是n个x相乘,用迭代法应该就OK乐。

程序如下:

#include

double power(double x,int n);/*此句是声明要调用的函数*/

void main(void)

{double x,int n;

cout<<"请输入x,n的值"<

cin>>x>>n;

cout<

}

/* 下面是函数power的定义*/

double power(double x,int n)

{double val=1.0;

int i;

for(i=1;i<=n;i++)

val=x*val;

return(val);

}

此处的函数power(doubel x,int n)就是定义的一个函数。可以被调用。函数要有一个返回值,因为函数被调用时作为一个表达式出现的。必须有返回值。

感觉写程序就是做数学题。

函数调用说明 
函数的嵌套调用函数允许嵌套调用,就是函数1调用函数2,函数2调用函数3 
函数的递归调用函数可以调用自身,称为递归调用对应递归的算法
递归的算法是一种递推的算法,颇有些福尔摩斯的味道,
函数的参数传递  
内联函数为了节省开销,在编译时,将函数体嵌入每一个调用语句处,
一般不能有循环,和switch语句
其实,应该就是简单的替换而已,就是为了省去调用和现场保护的时间和开销
语法:
inline 类型说明符 被调函数名(含类型说明的形参表)
函数重载重载这种机制,也是为了减少代码量,编译器会根据实参的类型和个数来查找匹配的函数。
C++支持取相同的函数名,但是形参不同,
 

 

函数的嵌套调用

例:输入两个整数,求他们的平方和。

算法:为了说明问题,设计两个函数,fun1,用来求平方和,fun2,用来求平方。

程序如下:

#include

void main(void)

{int a,b;

int fun1(int x,int y);

cin>>a>>b;

cout<<"a,b的平方和:"<

}

/*定义fun1*/

int fun1(int x,int y)

{int fun2(int m);/*声明fun2*/

return(fun2(x)+fun2(y));/*调用fun2*/

}

/*定义fun2*/

int fun2(int m)

{return(m*m);/*返回m的平方*/

}

在fun1函数中,调用fun2函数。就是函数的嵌套调用。

函数的递归调用

例:求n!。

算法:n!就是n*(n-1)*(n-2)…*1.要求5!,就要先求4!,要求4!的阶乘,就要先求3!要求3!就要先求2!要求2!就要先求1!1!=1。然后往回推回去。用循环语句实现的一个算法。

程序如下:

#include

long fac(int n)/*定义一个函数fac*/

{long f;

if(n<0) cout<<"你输入的数据错误"<

if(n==0) f=1

if(n>0) f=fac(n-a)*n;/*递归的部分*/

return(f);

}

就是这么一个过程,加入n=4,就一直执行到n=0,是个已知的值,然后往回代,就能求出4!的值。

函数的参数传递

有两种,一种是传值,一种是传引用。我们上面的都是传值。

传值用实参来初始化形参
初始化完成后,无论形参怎样变化,也不影响实参
 
传引用对形参的修改,对实参也有效先不管了,用到再看啦

 

C++的系统函数

应该是提高效率的最佳办法,调用系统函数。这就要熟悉常用的系统函数。

看下火影,该吃饭了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值