【入职准备——C++学习日记day5 函数相关】

函数的声明、定义及调用(实现模块化编程)

  • 声明:
返回值的数据类型 函数名(参数一的数据类型 参数一,参数二的数据类型 参数二,……);
  • 定义
返回值的数据类型 函数名(参数一的数据类型 参数一,参数二的数据类型 参数二,……)
{
 	实现函数功能的代码;
 	return 返回值;
}

注意:
1、函数的声明和定义可以书写在一起,也可以分开,如果书写在一起,一般放在main函数的上面,如果分开,一般在main函数的上面声明,在main函数下面定义。
2、如果函数的声明和定义分开书写,函数的声明后面一定要有分号,函数的定义后面一定不能写分号。
3、在同一个程序中,函数只需要声明和定义一次,也可以多次声明,但只能定义一次。
4、函数的声明必须和函数的定义一致(返回值的数据类型、函数名、参数列表)。
5、return语句返回值的数据类型必须与函数的声明一致。
6、如果函数的重点是实现功能,不关心返回值,返回值的数据类型填void,return语句后面就空。
7、函数可以没有任何参数。

  • 调用
函数名(参数一,参数二,……)

注意:
1、声明函数的代码必须放在调用之前,定义函数的代码可以放在调用之后。
2、调用函数的时候,参数泪飙必须与函数的声明一致。
3、函数中可以调用除main函数外的其它函数。
4、调用函数的代码可以独占一条语句,也可以用于表达式(赋值运算、算术运算、关系运算、函数的参数)。
5、如果函数用于表达式中,返回值的数据类型要匹配(否则可能会被隐式转换或编译错误)。
6、如果函数有返回值,可以不关心它,忽略它。

  • 举例
#include <iostream>
using namespace std;
//函数声明
int max(int a, int b);
int main()
{
	int z;
	//函数调用
	z = max(1, 2);
	cout << z << endl;
}
//函数定义
int max(int a, int b)
{
	int c;
	if (a > b)c = a;
	else c = b;
	return c;
}

变量作用域

  • 作用域是指程序中变量存在(或生效)的区域,超过该区域变量就不能被访问。

  • 变量分全局变量和局部变量两种,全局变量在整个程序中都可以访问,局部变量只能在函数或语句块的内部才能访问。

  • C++中定义变量的五种场景:
    1、在全部函数外部定义的是全局变量。
    2、在头文件中定义的是全局变量。
    3、在函数和语句块内部定义的是局部变量。
    4、函数的参数是该函数的局部变量。
    5、函数内部用static修饰的是静态局部变量。

  • 1)全局变量
    在整个程序声明周期内都是有效的,在定义位置之后的任意函数中都能访问。全局变量在主程序退出时,由系统收回内存空间。

  • 2)局部变量
    在函数或语句块内部的语句使用,在函数或语句块外部是不可用的。
    局部变量在函数返回或语句块结束时由系统收回内存空间。

  • 3)静态局部变量
    用static修饰的静态局部变量生命周期和程序相同,并且只会被初始化一次。其作用域为局部,当定义它的函数或语句块结束时,其作用域随之结束。当程序想要使用全局变量的时候应该先考虑使用static(考虑到数据安全性)。
    4)注意事项

  • 全局变量和静态局部变量自动初始化为0.

  • 局部变量不会自动初始化,其值是不确定的,程序中应该有初始化局部变量的代码,否则编译可能会报错(不同的编译器不一样)。

  • 局部变量和全局变量的名称可以相同,在某函数胡语句块内部,如果局部变量名与全局变量名相同,就会屏蔽全局变量而使用局部变量,如果想使用全局变量,可以在变量名前加两个冒号。

  • for循环初始化语句中定义的变量是局部变量。

函数参数的传递

调用函数的时候,调用者将数值赋给函数的参数
实参:调用者程序中书写的在函数名括号中的参数,可以是常量、变量和表达式。
形参:函数的参数列表。

函数分文件编写

  • 头文件(*.h):需要包含的头文件,指定明明空间,声明全部变了,函数的声明,数据结构和类的声明等。
  • 源文件(*.cpp):函数的定义,类的定义。
  • 主程序:main函数,程序的核心流程,需要用#include "头文件名"把头文件包含进来。

在这里插入图片描述

  • 添加*.cpp或*.h头文件
    解决方案→项目右键→创建新项→Visual C++(左侧)→C++文件/头文件在这里插入图片描述

递归函数在这里插入图片描述

#include <iostream>
using namespace std;

int f(int x)
{
	if (x == 0) return 0;
	return x + f(x - 1);
}
//3+f(2)
//  2+f(1)
//    1+f(0)
//      0
int main()
{
	cout << "f(3)=" << f(10) << endl;
	//100+99+98+…+1+0
	//计算从1加到100的和
	int sum = 0;
	for (int ii = 1;ii <= 100;ii++)
		sum = sum + ii;
	cout << "sum=" << sum << endl;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值