函数

一、函数的定义

     1.1  函数定义格式

           ① 无参函数(函数仅完成某种固定操作时,可将函数定义为无参函数)

               格式:<返回值类型>  <函数名> ()

                             {.......};

                   当函数定义在前调用在后且函数返回值为整形时,可省略函数的返回值类型;

                   当函数没有返回值时,必须指定其类型为void;

           ② 有参函数

                格式: <返回值类型>   <函数名>  (<类型标识符> arg1,<类型标识符>arg2)

                              {......};

    1.2函数的实参,形参,返回值

         形式参数(实参):在定义函数时,函数名后的圆括号中所列举的参数

         实际参数(实参):函数调用时在函数名后圆括号中依次列出的参数

         返回值:格式    return <表达式>;

二、函数的调用

        调用一个函数,就是把程序控制转去执行该函数的函数体。

      数据流程:

              (1)在主程序中,先给实参赋值

              (2)通过函数调用,将数据从主调函数传递到被调函数

              (3)被调函数的形参带值后,即可进行相应的数据处理和运算

              (4)如果有返回值,通过return语句带回到主调函数

                       无参函数的函数调用语句一般格式为:<函数名> ()

                        有参函数的函数调用语句一般格式为:<函数名> (<实参表>)

#include <iostream>
using namespace std;

int add(int num1, int num2)
{
    int sum = num1 + num2;
    return sum;
}
int main()
{
    int a = 10;
    int b = 20;
    int c = add(a, b);
    cout << "c= " << c << endl;


    a = 100;
    b = 500;
    c = add(a, b);
    cout << "c= " << c << endl;

    system("pause");
    return 0;
}

                 形参=实参

三、函数的嵌套与递归调用

    3.1函数的嵌套调用

        C++的函数不允许嵌套定义,但是函数之间的嵌套调用是允许的

        

#include<iostream>
using namespace std;
int max(int x,inty,int z)
{
   int s;
   s=x>y?x:y;
   return (s>z?s:z);
}
int min(int x,int y,int z)
{
   int t;
   t=x<y?x:y;
   return (t<z?t:z);
}
int dif (int x,int y,int z)
{
    int sub;
    sub=max(x,y,z)-min(x,y,z);
    return sub;
}
 void ()
{
    int a,b,c;
    cin>>a>>b>>c;
    cout<<"最大值-最小值的差值为 : "<<dif(a,b,c)<<endl;

         3.2函数的递归调用

           间接递归:函数A的函数体中调用函数B,而在函数B的函数体中有调用函数A 

           直接调用:函数A的函数体中又出现调用函数A的情况

#include<iostream>
using namespace std;
double P(double x,double n)
{
	if(n==0)
		return 1;
	else if(n==1)
		return x;
	else 
		return((2*n-1)*x*P(x,n-1)-(n-1)*P(x,n-2))/n;
}
int main()
{
	double x,n;
	cout<<"please enter x and n:"<<endl;
	cin>>x>>n;
	cout<<"P(x,n)= "<<P(x,n)<<endl;
	return 0;
}

四、函数与数组

    4.1数组元素作函数的参数

        数组元素可以作为函数的实参进行值的单向传递

#include<iostream.h>
int add(int x,int y,int z)
{  int c[10];
   c[k]=x+y;
   return c[k];
}
void main()
{  int a[10]={1,2,3,4,5,6,7,8,9,10};
   int b[10]={10,9,8,7,6,5,4,3,2,1};
   int s[10];
   for(i=0;i<10;i++)
      s[i]=add(a[i],b[i],i);
   for(i=0;i<10;i++)
      cout<<s[i]<<"  ";
    cout<<'\n';
}


结果为 11 11 11 11 11 11 11 11 11 11
        

4.2数组名作函数的参数

   数组名不仅表示数组的名称,还表示数组的首地址。

   参数的传递实际上是一种地址的传递,当采用数组名作实参和形参时,将实参数组的首地址传递给形参数组,这时形参数组与实参数组共享内存中的存储空间。

#include<iostream.h>
void  input(int x[], int n)
{
    cout<<"输入"<<n<<"个整数:";
    for(int i-0;i<n;i++)
}
int big (int b[],int n)
{
   int max=b[0];
   for(int i=1;i<n;i++) if (max<b[i])  max=b[i];
   return max;
}
void main()
{
    int a[10],max;
    input(a,10);
    max=big(a,10);
    cout<<max<<endl;

五、函数的声明

作用:告知编译器函数名称及如何调用函数

           函数的实际主体可以单独定义

    声明可以多次,但是函数的定义只能一次

#include<iostream>
using namespace std;
// 函数的声明
int max(int a,int b)
// 定义
int max(int a, int b)

{
	 return a > b ? a : b;

}

int main()
{
	int a = 10;
	int b = 20;
	cout << max(a, b) << endl;


	return 0;

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值