看板 Programming 關於我們 聯絡資訊
※ 引述《chenla (拉皮)》之銘言: : void a(int list[]) : { : int i; : list[1]=10; : list[2]=5; : for(i=0;i<6;i++) : { : printf("%d\n",i); : printf("%d\n",list[i]); : printf("----------------------\n"); : } : } : 請問 為什麼程式執行結束以後 : Run-Time Check Failure #2 - Stack around the variable 'x' was corrupted : 但&x 不是放在 list[0]嗎?? : 還有 為什麼副函式的void a(int list[]) : 要用list[] 在副函式承接用陣列有何意義? 在函數的參數裡 void a(int list[]) {..} 和 void a(int *list) {..} 實際上是一樣的, 都是宣告一個pointer to int, 不是真的宣告一個陣列, int指標list 指向int變數x的記憶體位址(&x), int變數x只有一個int的記憶空間 但是你的函數修改了不合法的位址(&x+1) 及 (&x+2) 所以造成資料損毀 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 221.169.231.77
chenla:噢噢,謝謝 原來那個不是陣列ˊˋ111.240.226.149 01/11 01:55
chenla:之前課本範例看好久,結果竟然是指標^^111.240.226.149 01/11 01:58
james732:重點是陣列與指標之間的關係 140.117.171.46 01/11 01:58