4124人加入学习
(13人评价)
C++编程系列 第二季函数和类

制作于2018.4.2

价格 免费

局部对象

在C++中,名字(变量、函数、类型)有作用域(静态),对象有生命周期(动态)。

名字的作用域是程序文本的一部分,名字在其中可见。对象的生命周期是程序执行过程中该对象存在的一段时间。

形参和函数体内部定义的变量统称为局部变量,仅在函数的作用域内可见。

在所有函数体外定义的对象存在于程序的整个执行过程中。局部变量的生命周期则依赖于定义的方式。

 

 

自动对象

我们把只存在于块执行期间的对象称为自动对象。

普通的局部变量对应的对象,是自动对象,在每次调用函数时创建和销毁。

形参也是一种自动对象。函数开始时为形参申请存储空间,因为形参定义在函数体作用域内,所以一旦函数终止,形参也就被销毁。

 

 

局部静态对象

局部静态对象在程序的执行路径第一次经过对象定义语句时初始化,并且知道程序终止才被销毁,所以局部静态对象不是自动对象。

可以用static关键字来修饰局部变量,从而获得局部静态对象。

static int count = 0;

 

 

#include <iostream>
#include <string>

using namespace std;

int min(int num1, int num2, int num3);
//定义在所有函数体外的对象,为全局对象。
int a = 3;

int main()
{
	//res的作用域为main()函数
	int res = min(4, 8, 2);
	//cout << res << endl;

	res = min(3, 3, 6);
	res = min(2, 3, 5);
	return 0;
}

//num1/num2/num3为函数min()的形参
int min(int num1, int num2, int num3)
{
	//res的作用域为min()函数
	int res;
	//局部静态变量,直到程序终止才被销毁
	static int count = 0;
	count += 1;
	cout << count << endl;
	res = num1 < num2 ? num1 : num2;
	res = res < num3 ? res : num3;
	return res;
}

 

[展开全文]

可以用static关键字来修饰局部变量,从而获取局部静态对象。

static int cout==0;

[展开全文]

int main(0

{

int res=min(4,8,2);

cout<<res;

}

int min(int num1,int num2,int num3)

{

int res;

static int count=0;

count+=1;

res=num1<num2?num1:num2;

res=res<num3?res:num3;

return res;

 

}

[展开全文]

授课教师

SIKI学院老师

课程特色

下载资料(1)
视频(43)