操作系統 | 銀行家算法

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 };

此時輸出爲:真. 

 

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