c++知识点合集已经完成欢迎前往主页查看,点点赞点点关注不迷路哦
点我进入c++第一章知识点合集
MYSQL知识点持续更新中
MYSQL第一章节DDL数据定义语言的操作----点我进入
MYSQL第二章节DDL-数据库操作语言 DQL-数据查询语言----点我进入
MYSQL-第三章节DCL-管理用户,控制权限----点我进入
MYSQL-第四章节常用函数说明----点我进入
第四章知识点合集
目录
第四章知识点合集
自定义函数
定义函数的方法
定义一个无参函数
定义一个有参函数
函数结构:
声名部分包括:
定义空函数
函数的调用形式
3.函数参数
形参与实参
#include指令
函数的嵌套 递归
函数的嵌套调用
局部变量与全局变量
局部变量
全局变量
例子:
自定义函数
定义一个函数应当包括以下内容
- 指定函数的名字,以便按函数名字进行调用(尽量做到见名知意)
- 指定函数的类型,即函数的返回值
- 指定函数的参数名字和类型,以便在调用函数时向他们传递数据。对无参函数不需要这一项。
定义函数的方法
-
定义一个无参函数
函数结构:
函数类型 函数名()
{
声明部分
语句部分
}
或
函数类型 函数名(void)
{
声明部分
语句部分
}
注意:
无参函数:函数名后面的括号为空没有任何东西
函数名后面括号内的void表示空也就是表示函数没有参数
在定义函数时要用类型名,指定函数值的类型,即指定函数值带回来值的类型
-
定义一个有参函数
函数结构:
函数类型 函数名(参数类型1 参数名1, …, 参数类型n 参数名n)
{
声明部分
语句部分
}
声名部分包括:
- 对函数中要用到的变量进行定义
- 对要调用的函数进行声名(怎样声名一个函数见后面)
3. 告诉编译器有一个函数叫什么,参数是什么,返回类型是什么。
4. 函数的声明一般出现在函数的使用之前。要满足 先声明后使用 。
5. 函数的声明一般要放在头文件中。
注意:
编译系统在检查函数调用时要求函数名、函数类型、参数个数和参数顺序必须与函数声明一致,实参类型必须与形参类型相同或赋值兼容。由于不检查参数名,因此在函数声明时,形参名可以省略。例如: int add( int ,int );
例子
int Max(int x, int y)
{
int z; //函数体中的声明部分
z = x>y ? x:y; //下面是语句部分
return z; //将z的值作为函数函数值带回主调函数
}
注意:
- 该函数的作用是求出最大值将最大值的值以整型的结果进行返回
- 在调用此函数时主调函数将实际的值传递给被调函数中的形式参数x和y进行运算。
-
定义空函数
函数结构
函数类型 函数名()
{
}
例子:
Void dunmmy()
{
}
注意:
该函数体为空,调用此函数时无需做任何事情,没有什么实际作用。
函数的调用形式
- 函数调用语句
例子:
void printf()
{
printf(“我是函数调用语句的方法”)
}
int main()
{
void printf(); //函数的声名
printf(); //函数的调用
}
- 函数表达式
将被调函数成为表达式的一部分
例子:
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<math.h>
函数的嵌套 递归
函数的递归调用:在函数的嵌套调用中,如果函数嵌套调用的是自己,这就是函数的递归调用
在调用fun函数时,又要调用fun函数,这就是fun函数的递归调用。但是,这里的fun函数的调用是无终止的,故函数的递归调用必须要设置终止条件,通常在函数定义时通过if语句控制
递归求和例题:递归求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);
}
局部变量与全局变量
每个变量都有属于它的作用域,就是这些变量在什么范围内有效; 我们按照变量的作用域范围可以把变量划分为局部变量和全局变量;
局部变量
局部变量出现在三种地方:
- 在函数的开头定义的变量
(2)在函数内的复合语句内定义的变量
(3)形式参数
注意:
在一个函数内部定义的变量只在本函数范围内有效,也就是只有本函数内才能引用它们,在此函数外不能使用这些变量;
在复合语句内定义的变量只能在本复合语句范围内有效,只有本复合语句内才能引用他们,在该复合语句外不能使用这些变量;
还有就是函数的形参,只在该函数内有效;
例子
变量sum 定义在函数的开头
int fun(int x,int y)
{
int sum;
sum=x+y;
}
变量sum 定义在函数的开头,所以它是局部变量,它的作用域就是这个函数,出了这个函数,就会自动被销毁,无法被别处引用;同时 变量 x 和 y作为形参也是局部变量;
复合语句中的局部变量:
A:
If(1)
{
int a;
cout<<a;
}
B:
If(1)
{
Int a=3;
}
cout<<a;
注意
A:程序可以正常运行输出3,而B程序不可以正常运行 int a 的使用范围只存在于复合语句中
全局变量
在函数外部定义的变量就是全局变量或外部变量;全局变量为该源文件中所有函数所共有,它的作用范围是从变量定义的位置到源文件结束;
例子:
Int a=5,b=3; //定义一个全局变量a,b
Int main()
{
Cout<<a<<endl<<b; 输出结果:
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; }