看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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; } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.164.19 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1422934833.A.E08.html
wenyonba: 因為陣列裡的值沒一個比VDR2大,SVCLayer一直++,就會存取 02/03 12:16
wenyonba: 到不合法的位址 02/03 12:17
wenyonba: SetVR裡應該要加個判斷是不是已經到陣列尾巴了 02/03 12:18
hardware: 感謝 02/03 16:06