[問題] 基本問題不曉得要怎寫

作者: hardware (哈味)   2015-02-03 11:40:31
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
NO
問題
#include <cstdlib>
#include <iostream>
using namespace std;
int VDR1 = 3000;
int VDR2 = 3500;
int VDR3 = 2500;
int BRM[] = {1352,1683,2102,2305,2666,2943,3201};
int SVCLayer,temp;
int SetVR(int VBR[],int VDR) //這裡只要VDR大於陣列,執行結果就會出錯 不知怎改
{
SVCLayer = 0;
do{
SVCLayer ++;
}
while(VBR[SVCLayer] < VDR);
return VBR[SVCLayer-1];
}
void GetVR()
{
cout << BRM[SVCLayer-1] << endl;
cout << SVCLayer-1 <<endl;
}
int main()
{
SetVR(BRM,VDR3);//沒問題
GetVR();
SetVR(BRM,VDR1);//沒問題
GetVR();
SetVR(BRNM,VDR2); //只要呼叫超過BRM陣列的值,就會出錯
GetVR();
system("pause");
return 0;
}
作者: wenyonba (射後不理很XX啊!!!!)   2015-02-03 12:16:00
因為陣列裡的值沒一個比VDR2大,SVCLayer一直++,就會存取到不合法的位址SetVR裡應該要加個判斷是不是已經到陣列尾巴了
作者: hardware (哈味)   2015-02-03 16:06:00
感謝

Links booklink

Contact Us: admin [ a t ] ucptt.com