c++第四章知识点合集(自定义函数的格式和使用方法详解, #include,函数的嵌套 递归,局部变量与全局变量的区别等等)

目录

第四章知识点合集

自定义函数

定义函数的方法

定义一个有参函数

函数结构:

声名部分包括:

定义空函数

函数的调用形式

3.函数参数

形参与实参

#include指令

函数的嵌套 递归

函数的嵌套调用

局部变量与全局变量

局部变量

全局变量


第四章知识点合集

自定义函数

定义一个函数应当包括以下内容

  1. 指定函数的名字,以便按函数名字进行调用(尽量做到见名知意)
  2. 指定函数的类型,即函数的返回值
  3. 指定函数的参数名字和类型,以便在调用函数时向他们传递数据。对无参函数不需要这一项。

定义函数的方法

  1. 定义一个无参函数

函数结构:

函数类型 函数名()

{

声明部分

语句部分

}

函数类型 函数名(void)

{

声明部分

语句部分

}

注意:

无参函数:函数名后面的括号为空没有任何东西

函数名后面括号内的void表示空也就是表示函数没有参数

在定义函数时要用类型名,指定函数值的类型,即指定函数值带回来值的类型

  1. 定义一个有参函数

函数结构:

函数类型 函数名(参数类型1 参数名1,  …, 参数类型n 参数名n)

{

声明部分

语句部分

}

声名部分包括:

  1. 对函数中要用到的变量进行定义
  2. 对要调用的函数进行声名(怎样声名一个函数见后面)

3告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。

4. 函数的声明一般出现在函数的使用之前。要满足 先声明后使用 。

5. 函数的声明一般要放在头文件中。

注意:

编译系统在检查函数调用时要求函数名、函数类型、参数个数和参数顺序必须与函数声明一致,实参类型必须与形参类型相同或赋值兼容。由于不检查参数名,因此在函数声明时,形参名可以省略。例如:  int  add( int  ,int  );

例子

int Max(int x, int y)

{

int z;            //函数体中的声明部分

z = x>y ? x:y;    //下面是语句部分

return z;       //将z的值作为函数函数值带回主调函数

}

注意:

  1. 该函数的作用是求出最大值将最大值的值以整型的结果进行返回
  2. 在调用此函数时主调函数将实际的值传递给被调函数中的形式参数x和y进行运算。

  1. 定义空函数

函数结构

函数类型 函数名()

{

}

例子:

Void dunmmy()

{

}

注意:

该函数体为空,调用此函数时无需做任何事情,没有什么实际作用。

函数的调用形式

  1. 函数调用语句

例子:

void  printf()

{

printf(“我是函数调用语句的方法”)

}

int main()

{

void  printf(); //函数的声名

printf();       //函数的调用

}

  1. 函数表达式

将被调函数成为表达式的一部分

例子:

int  max(int x,int y)

{

int z ;  

z = x>y ? x:y;

return z;

}

Int main()

{

Int c = 2*max(2,3);

printf(%d,c);       //结果为:6

      

            

}

3.函数参数

将被调函数的结果成为函数参数的一部分

例子:

int  max(int x,int y)

{

int z ;  

z = x>y ? x:y;

return z;

}

Int main()

{

Int c = max(7,max(5,6));

printf(%d,c);          //结果为:7

}          

形参与实参

形参:形式参数(定义一个函数时括号里面的变量名称为形式参数)

实参:实际参数(在主调函数中调用一个函数时函数名括号里面的的变量名为实际参数)

例子:

int  max(int x,int y) // x , y 为形式参数

{

int z ;  

z = x>y ? x:y;

return z;

}

int main()

{

Int c = 2*max(2,3);  // 2 , 3 位实际参数

printf(%d,c);  

      

 }

#include指令

#include指令是一种编译预处理指令,也就是源程序在被编译之前编译器执行的操作。
作用:在源程序被编译之前,向源程序中复制头文件文本内容
头文件:被包含在其他文件的起始处的文件,有一些常用的功能模块

例子:

若在主函数中需要用到数学函数的话则需要在本文件开头写上

#include

函数的嵌套 递归

函数的递归调用在函数的嵌套调用中,如果函数嵌套调用的是自己,这就是函数的递归调用

c++第四章知识点合集(自定义函数的格式和使用方法详解, #include,函数的嵌套 递归,局部变量与全局变量的区别等等)_第1张图片

在调用fun函数时,又要调用fun函数,这就是fun函数的递归调用。但是,这里的fun函数的调用是无终止的,故函数的递归调用必须要设置终止条件,通常在函数定义时通过if语句控制

c++第四章知识点合集(自定义函数的格式和使用方法详解, #include,函数的嵌套 递归,局部变量与全局变量的区别等等)_第2张图片

递归求和例题:递归求1-100之和

int RecursionFunc(int num)    //1-100和

{

    if(num == 0)            //中止条件

        return 0;

    else

        return num + RecursionFunc(num - 1);

}

函数的嵌套调用

函数的定义是独立的,在一个函数中不能嵌套定义另外一个函数。但是,函数可以嵌套调用,即可以在一个函数中调用另一个函数

例子:

void dog()

{

printf(我会跑);

}

void fish ()

{

printf(我会飞);

}

void pepole  ()

{

printf(我会唱,跳,rap,和篮球);

}

void choice (char ch)

{

switch(ch)

case p:void pepole();break;

case d:void dog();break;

case f:void fish ();break;

}

int main()

{

void choice ();  //进行声名

char ch;

printf(请输入p,f,d,进行选择);

ch=getchar();

void choice (ch);

}

局部变量与全局变量

每个变量都有属于它的作用域,就是这些变量在什么范围内有效; 我们按照变量的作用域范围可以把变量划分为局部变量和全局变量;

局部变量

局部变量出现在三种地方:

  1. 在函数的开头定义的变量
    (2)在函数内的复合语句内定义的变量
    (3)形式参数

注意:

在一个函数内部定义的变量只在本函数范围内有效,也就是只有本函数内才能引用它们,在此函数外不能使用这些变量;

在复合语句内定义的变量只能在本复合语句范围内有效,只有本复合语句内才能引用他们,在该复合语句外不能使用这些变量;

还有就是函数的形参,只在该函数内有效;

例子

变量sum 定义在函数的开头

int fun(int x,int y)

{

int sum;

sum=x+y;

}

变量sum 定义在函数的开头,所以它是局部变量,它的作用域就是这个函数,出了这个函数,就会自动被销毁,无法被别处引用;同时 变量 x 和 y作为形参也是局部变量;

复合语句中的局部变量

A:

If(1)

{

int a;

cout<

}

B:

If(1)

{

Int a=3;

}

cout<

注意

A:程序可以正常运行输出3,而B程序不可以正常运行 int a 的使用范围只存在于复合语句中

全局变量

在函数外部定义的变量就是全局变量或外部变量全局变量为该源文件中所有函数所共有,它的作用范围是从变量定义的位置到源文件结束

例子:

Int a=5,b=3; //定义一个全局变量a,b

Int main()                     

{

Cout<

Int max(int x,int y);                               5

Int max(int a,int b)                                3

}                                                              5

Int max(int x,int y)

{

Int z;

z=x>y ? x:y;   return z;  }

你可能感兴趣的:(c++知识点合集,c++,算法,c语言,c#,开发语言)