2013-12-08 35 views
0

任何人都可以向我解釋爲什麼我在這裏遇到段錯誤? (我正在寫一個較長的程序,涉及添加和乘以保存爲動態數組的矩陣,但我試圖縮小程序的範圍以查找錯誤 - 所以不要擔心下面的摘錄不會引起錯誤,牛逼什麼太大的意義,我只是想知道什麼是與它語法錯誤)使用指針和malloc的程序中的段錯誤

int 
main (void) 
{ 
    int* a; 
    int* c; 
    int i,j,d; 
    int n = 3; 
    int m = n*n; 
    a = (int*)malloc(m*sizeof(int)); 
    c = (int*)malloc(m*sizeof(int)); 
    a[0] = 1; a[1] = 4; a[2] = 3; a[3] = 2; a[4] = 2; a[5] = 2; a[6] = 0; a[7] = 1; 
    a[8] = 0; 

for (i = 0; i<n; ++i) 
    { 
    for (j = 0; i<n; ++j) 
     { 
     d = i*n + j; 
     c[d] = a[d] + a[d]; 
     } 
    } 


return 0; 
} 

回答

2

二回路應在終止條件使用j沒有i

for (j = 0; i<n; ++j) 
      ^

應該

for (j = 0; j < n; ++j) 
1

在你的第二個循環中,您有錯誤的條件:

for (j = 0; i<n; ++j) 

應該

for (j = 0; j<n; ++j)