[問題] 有關陣列大小出錯

看板C_and_CPP (C/C++)作者 (硬漢)時間16年前 (2009/02/05 14:31), 編輯推噓1(104)
留言5則, 3人參與, 最新討論串1/1
#include <stdio.h> #include <stdlib.h> #include <iostream.h> #include <conio.h> void main(void) { FILE *fp; int a[16][16],x,y,j,h,v,s,c; char file_name[20]=""; printf("file name:"); scanf("%s",file_name); if((fp=fopen(file_name,"r"))==NULL) { printf("test file name error!!\n"); exit(1); } for(y = 0; y < 16; y++)//將資料讀入矩陣 { for(x = 0; x < 16; x++) { fscanf(fp,"%d",&a[x][y]); } }//將資料讀入矩陣 for(v = 0; v < 16; v+=8)// { for(h = 0; h < 16; h+=8) { if(v==0&&h==0){ cout<<a[h][v]<<endl; j=a[h][v]; }else{ cout<<a[h][v]-j<<endl; j=a[h][v]; } } } fclose(fp); } ------------------------------------------------------------------------ 我是先將.txt檔內的16*16大小的陣列讀入,再做運算,照理說我只要創個a[15][15]的 陣列即可呀,為什麼我陣列大小設15就出錯,非得用16不可(不設16執行會記憶體出錯) ,感覺這樣很浪費空間...懇請各位高手解惑。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.42.213.220

02/05 14:48, , 1F
a[15][15] = a[0~14][0~14]
02/05 14:48, 1F

02/05 14:56, , 2F
呃...原來是這樣啊,但是我宣告a[15][15],為何我能印
02/05 14:56, 2F

02/05 14:58, , 3F
出a[15][15] 不是只有0到14嗎?讓我誤認為a[15][15]是
02/05 14:58, 3F

02/05 14:58, , 4F
a[0~15][0~15]...
02/05 14:58, 4F

02/05 15:01, , 5F
C/C++不管陣列下標超界
02/05 15:01, 5F
文章代碼(AID): #19YeV9ua (C_and_CPP)
文章代碼(AID): #19YeV9ua (C_and_CPP)