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

看板C_and_CPP (C/C++)作者 (硬體)時間11年前 (2015/02/03 11:40), 編輯推噓0(004)
留言4則, 2人參與, 最新討論串1/1
開發平台(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

02/03 12:16, , 1F
因為陣列裡的值沒一個比VDR2大,SVCLayer一直++,就會存取
02/03 12:16, 1F

02/03 12:17, , 2F
到不合法的位址
02/03 12:17, 2F

02/03 12:18, , 3F
SetVR裡應該要加個判斷是不是已經到陣列尾巴了
02/03 12:18, 3F

02/03 16:06, , 4F
感謝
02/03 16:06, 4F
文章代碼(AID): #1Kq4Cnu8 (C_and_CPP)
文章代碼(AID): #1Kq4Cnu8 (C_and_CPP)