作者syura945 (○~)
看板Programming
標題Re: [問題] 陣列 副函式問題
時間Tue Jan 11 01:45:48 2011
※ 引述《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