操作系统 | 银行家算法

int p[n][m] = { { 7, 5, 3 } ,{ 3, 2, 2 } ,{ 9, 0, 2 },{ 2, 2, 2 }, { 4, 3, 3 } };  //变量名p其实是一个指向二维数组的指针,作为实参调用时记得加取值符号&

P[i].SetMax(&p[i][m]); 


为什么void Banker()的形参是Process类的对象,而不是简单地用一个数组表示request?

因为仅仅只用数组的话,不知道是哪一个进程对象的需求,也不能修改该进程对应的变量


两个数组为形参的比较函数,实际上比较的是内存地址的大小

先看测试用例:

using namespace std;
#include<iostream>

int a[3] = { 1,1,1 };
int b[3] = {2,2,2};


void Compare(int req[3], int had[3])
{
	
	for (int i = 0; i < 3; i++)
	{
		if (req[i] > had[i])  //只要有一个请求量大于所拥有的,则判定为false
		{
			cout << "假"; break;
		}
		else
		{
			cout << "真"; break;
		}
	}
}



int main()
{
	Compare(&a[3], &b[3]);


	system("pause");
	return 0;
}

此时输出为:假 

调用时,两个实参分别是&a[3]   和   &b[3],实际上是之前初始化的两个数组的地址.

如果在声明时对调一下a[]和b[]的位置

int b[3] = {2,2,2};
int a[3] = { 1,1,1 };

此时输出为:真. 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章