[問題] 請問宣告一個陣列,存取超過陣列大小的 …
今年交大考了一題程式,我在trace的時候怎麼看都是會超過陣列大小
在第11行的地方(連括號也算)if(k>=a[j])break;
那個a[j]在i=3的時候就超過9了,我一直覺得很納悶,就用電腦跑跑看
可是竟然每次執行的結果都一樣,難道宣告陣列超出一點大小的內容有某種規則嗎
雖然不會是一回事可是我蠻好奇為甚麼的,想請教一下有沒有人知道
附程式如下:
#include<stdio.h>
#include<conio.h>
void foo(int *a, int r, int n)
{
int k=a[r];
int j;
for(j=2*r;k<=n;j*=2)
{
if(j<n)
if(a[j]<a[j+1])j++;
if(k>=a[j])break;
a[j/2]=a[j];
}
a[j/2]=k;
}
int b[10]={4,7,1,5,15,12,9,6,3,8};
int n=10;
int main(void)
{
int i;
for(i=n/2;i>=1;i--)
foo(b,i,n);
for(i=0;i<10;i++)
printf("%d\t",b[i]);
getch();
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.79.23
推
03/17 01:38, , 1F
03/17 01:38, 1F
→
03/17 01:42, , 2F
03/17 01:42, 2F
→
03/17 01:43, , 3F
03/17 01:43, 3F
※ 編輯: worldxxi 來自: 118.169.79.23 (03/17 01:58)
推
03/17 08:25, , 4F
03/17 08:25, 4F
→
03/17 08:25, , 5F
03/17 08:25, 5F
→
03/17 08:26, , 6F
03/17 08:26, 6F
→
03/17 08:27, , 7F
03/17 08:27, 7F
→
03/17 08:28, , 8F
03/17 08:28, 8F
→
03/17 08:29, , 9F
03/17 08:29, 9F
→
03/17 08:34, , 10F
03/17 08:34, 10F
→
03/17 15:22, , 11F
03/17 15:22, 11F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章