Re: [問題] 陣列 副函式問題
※ 引述《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
討論串 (同標題文章)