作者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
1F:推 chenla:噢噢,谢谢 原来那个不是阵列ˊˋ111.240.226.149 01/11 01:55
2F:推 chenla:之前课本范例看好久,结果竟然是指标^^111.240.226.149 01/11 01:58
3F:→ james732:重点是阵列与指标之间的关系 140.117.171.46 01/11 01:58