Re: [問題] 陣列 副函式問題

看板Programming作者 (○~)時間13年前 (2011/01/11 01:45), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

01/11 01:55, , 1F
噢噢,謝謝 原來那個不是陣列ˊˋ
01/11 01:55, 1F

01/11 01:58, , 2F
之前課本範例看好久,結果竟然是指標^^
01/11 01:58, 2F

01/11 01:58, , 3F
重點是陣列與指標之間的關係
01/11 01:58, 3F
文章代碼(AID): #1DAqNGEa (Programming)
討論串 (同標題文章)
文章代碼(AID): #1DAqNGEa (Programming)